目录
Python编程技巧
写在前面,在不断学习的过程中,不断吸收一些高效的代码,我会在文末引用,但不保证这些引用是原文链接,很期待大家和我一起维护,文末评论即可,我会测试然后更新在文中,也可以共同GitHub贡献。你可以在浏览器中利用ctrl+F来检索对应的技巧。
1、计算你的时间复杂度和空间复杂度
1、减少冗余数据
如用上三角或下三角的方式去保存一个大的对称矩阵。在0元素占大多数的矩阵里使用稀疏矩阵表示。
2、循环之外能做的事不要放在循环内
3、对于and,应该把满足条件少的放在前面,对于or,把满足条件多的放在前面
4、while 1 比 while True 更快
5、使用**而不是pow
2、交换两个数
# 交换堆顶和堆尾元素
def swap(nums,length):
nums[1] , nums[length] = nums[length],nums[1]
# 由于传入的是地址,不是重新申请局部空间,可以不用return
return nums
3、合并字符串
# 使用join合并迭代器中取出的字符
s = ''.join(a)
# 选择合适的合并
s1, s2 = 'ax', 'bx'
# 最慢
'abc%s%s' % (s1, s2)
# 中间
'abc{0}{1}'.format(s1, s2)
# 最快
'abc' + s1 + s2
3、联级比较
# x < y < z 比 x < y and y < z 快一点
4、设置断言
# 必须保证a和b的长度相等,否则直接结束程序
assert len(a) == len(b)
5、列表生成 一行结束
new_list = [fn(item) for item in a_list if condition(item)]
6、三元操作符进行条件赋值
[on_true] if [expression] else [on_false]
7、判断元素是否在特殊集合中
if m in [1,3,5,7]:
if m==1 or m==3 or m==5 or m==7:
8、函数传入较多参数
*可以使用运算符将可迭代对象解压缩为函数调用中的参数
fruits = ['lemon', 'pear', 'watermelon', 'tomato']
** 运算符允许我们采取键值对的字典,并把它解压到函数调用中的关键字参数
date_info = {'year': "2020", 'month': "01", 'day': "01"}
附reference
1、https://fantianzuo.blog.csdn.net/article/details/126720354
2、https://cloud.tencent.com/developer/article/1361631
3、https://zhuanlan.zhihu.com/p/45650331
4、link4