"""
在列表里计数,使用 Python 原生函数计数要快很多,所以尽量使用原生函数来计算。
"""
elements =list(range(1,1000001))# 常见写法
num =0for n in elements:
num +=1# 建议写法len(elements)
过滤一个列表
"""
过滤一个列表,推导列表的方式最快。
"""
elements =list(range(1,1000001))# 第一种,常见写法
l =[]for e in elements:if e %2:
l.append(e)# 第二种,常见写法。filter 增加了复杂度,返回一个迭代对象再用 list 转成一个列表,这样会增加开销。list(filter(lambda e : e %2, elements))# 建议写法,推导的方式性能最佳[e for e in elements if e %2]
使用异常检查属性
"""
classUser(object):
name ='Python'# 常见写法,通过内置函数 hasattr 检查,查找内部类的属性增加了开销。
user = User()ifhasattr(user,'name'):
user.name
# 建议写法,通过异常捕获
start = timeit.default_timer()try:
user.name
except AttributeError:pass
检查列表元素
"""
检查列表元素
"""
elements =list(range(1,1000001))# 常见写法,使用循环的方式检查defcheck_number(n):for e in elements:if e == n:returnTruereturnFalse
check_number(10000)# 建议写法,直接使用 in 检查列表10000in elements
列表去重
"""
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
"""
elements =list(range(1,10001))# 常见写法,使用循环的去重列表
u =[]for e in elements:if e notin u:
u.append(e)# 建议写法,使用 set 对列表去重set(elements)
"""
将迭代循环放入函数
"""# 常见写法,循环调用 1000 函数。defcube(n):return n**3
cubes =[cube(e)for e inrange(1000)]# 建议写法,把重复的循环一次性塞入函数。defcompute_cubes():return[e**3for e inrange(1000)]
compute_cubes()
检查是否为 True
"""
var =True# 第一种,常见写法。== 会调用魔术函数 __eq__ 来比较左右两边的类型。if var ==True:pass# 第二种,常见写法。使用 is 来判断。if var isTrue:pass# 建议写法,直接使用这种方式来判断,是否为空、是否为 None、是否为空 list、是否为空 dict 会比较快。if var:pass
检查列表是否为空
"""
检查列表是否为空
"""
l =[]# 第一种,常见写法。iflen(l)==0:pass# 第二种,常见写法。if l ==[]:pass# 建议写法,这种方式最快。ifnot l:pass
生成一个 list 或 dict
"""
生成一个 list or dict
"""# 常见写法,使用 list 生成一个对象,会产生开销。list()# 建议写法,[] 直接返回一个 list,开销较小。[]# 第三种方式,{} 直接返回一个 dict,开销较小。{}
链式比较
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群991032883
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''# 常见写法
a =5if a >1and a <7:pass# 建议写法if1< a <7:pass
变量交换
# 常见写法
x =10
y =5
tmp = x
x = y
y = tmp
# 建议写法
x =10
y =5
x, y = y, x
三目运算符
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群991032883
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''# 常见写法
a =10
b =5if a > b:
c = a
else:
c = b
# 建议写法
c = a if a > b else b
拼接字符列表
'''
# 常见写法
l =['a','b','c','d']str=''for e in l:str=str+ e
# 建议写法str=''.join(l)
格式化字符
# 常见写法
name ="tony"
age =100str="myname : "+ name +" my age : "+str(age)str="myname : %s my age : %d"%(name, age)# 建议写法str="myname : {} my age {}".format(name, age)
过滤列表
'''
# 常见写法
mylist =range(20)
odd_list =[]for e in mylist:if e %2==1:
odd_list.append(e)# 建议写法
odd_list =[e for e in mylist if e %2==1]
过滤字典
# 常见写法
user_list =[{'name':'lucy','email':'lucy@g.com'},{'name':'lily','email':'lily@g.com'}]
user_email ={}for user in user_list:if'email'in user:
user_email[user['name']]= user['email']# 建议写法{user['name']: user['email']for user in user_list if'email'in user}
# 常见写法
my_container =['lily','lucy','tom']
index =0for element in my_container:print('{} {}'.format(index, element))
index +=1# 建议写法for index, element inenumerate(my_container):print('{} {}'.format(index, element))
避免使用可变(mutable)变量作为函数参数的默认初始化值
# 常见写法deffunction(l =[]):
l.append(1)return l
print function()print function()print function()# print[1][1,1][1,1,1]# 建议写法,使用 None 作为可变对象占位符deffunction(l=None):if l isNone:
l =[]
l.append(1)return l