A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我们知道Python这门语言在运行速度上已经败给了许多别的语言(比如C, C++, Java, Golang....).但从一个开发者的角度来看Python是我最喜欢的语言,很大一部分原因在于其语法简单(其实是我比较懒),还有很多很sao的操作,可以大大提高我们的敲代码的效率.我们通常叫这种sao操作为pythonic.

一 交换两个变量
传统写法:
temp = a
a = b
b = temp
pythonic写法:
a, b = b, a

二 枚举enumerate
传统写法:
alist = ["老胡", "老王", "老李", "老赵"]
aDict = {}
for i in range(len(alist)):
    aDict[alist] = i
pythonic写法:
alist = ["老胡", "老王", "老李", "老赵"]
aDict = {}
for index, item in enumerate(alist):
    aDict[item] = index

三 推导式
Python中的推导式分为三种列表推导式,字典推导式,集合推导式
列表推导式:
evenList = [i for i in range(0,101) if i % 2 == 0]
字典推导式:
ADict = {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
}
BDict = {value: key for key, value in ADict.items()}
集合推导式和列表一样

四 lambda表达式
所谓lambda表达式就是匿名函数,我们为什么要使用匿名函数呢?有些时候我们想要使用一个函数但是整个程序中只需要使用这一次,这时候使用lambda表达式无疑最方便了
设想一个场景,有一个列表里面存放着一对对的元组,现在要按元组的第二个元素对该列表进行排序
传统方法:
aList = [(2, 3), (1, 2), (4, 5), (7, 4)]
def sortKey(x):
    return x[1]
aList.sort(key=sortKey)  
print(aList)
pythonic:
aList = [(2, 3), (1, 2), (4, 5), (7, 4)]
aList.sort(key=lambda x: x[1])

五 使用装饰器
def doExtraJob(func):
    def wrap():
        func()
        print("****do extra job****")
    return wrap
@doExtraJob
def partA():
    print("----do A job----")
@doExtraJob
def partB():
    print("----do B job----")
@doExtraJob
def partC():
    print("----do C job----")
if __name__ == '__main__':
    partA()
    partB()
    partC()

六 else语句
大部分人只知道else语句和if语句一起使用,但是你们知道吗else语句也可以和for语句,while语句,try语句一起使用
设想一个场景,你在对一个内部数据未知的列表进行循环时(不论是for还是while),你设置了一个遇到偶数就break的语句,倘若数组里不含偶数就输出奇数列表字样.
传统方法:
aList = [1, 3, 5, 7, 9]
flag = True
for i in aList:
    if i % 2 == 0:
        flag = False
        break
if flag:
    print("奇数列表")
pythonic:
aList = [1, 3, 5, 7, 9]
for i in aList:
    if i % 2 == 0:
        break
else:
    print("奇数列表")

七 多用Python内置函数
map函数、.filter函数、reduce函数









0 个回复

您需要登录后才可以回帖 登录 | 加入黑马