Python是一种功能强大的解释型编程语言。我们可以通过下面的10条优化技巧来减少代码量并提高代码的运行效率。
- 善用列表(list)推导式
问题:输出1万内每个数的平方。 发现用列表推导式所用时间更少。
from timeit import default_timer as timer
start = timer()
square =[]
for n in range(10000):
square.append(pow(n,2))
end = timer()
print("优化前耗时:",end - start)
#优化后
start2=timer()
square=[pow(n,2) for n in range(10000)]
end2=timer()
print("优化后耗时:",end2 - start2)
print(square)
- 用Python生成器节约运行内存
如果对1万内每个数的平方求和,换用Python生成器来存储过程数据,我们发现占用的内存更少。
import sys square = [n**2 for n in range(10000)] print(sum(square)) print(sys.getsizeof(square),'字节') #优化后 square = (n**2 for n in range(10000)) print(sum(square)) print(sys.getsizeof(square),'字节')
- 用sorted()函数快速实现序列元素的升序排列,用reverse=True实现降序
lst=[20, 40, 20, 20, 40, 60, 70] print(sorted(list(lst),reverse=True))
- 用集合set快速过滤掉重复元素
lst=[20, 40, 20, 20, 40, 60, 70] # print(sorted(list(lst),reverse=True)) print(set(lst))
- 用enumerate遍历输出序列结构中元素的位置和值
用enumerate后,输出的结果不变,但代码更简洁。
dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:
print(count, name)
count += 1
#优化后
print('优化后')
for i,name in enumerate(dogs,start=1):
print(i,name)
- 用字典dictionary中get() 和setdefault()设置默认键的值
roman_nums = {'I':1, 'II':2, 'III':3, 'IV':4 }
# value=roman_nums['V'] # 访问不存在的键值会报错 KeyError: 'V'
value=roman_nums.get('V',5)
print('value=',value)
print(roman_nums)
value = roman_nums.setdefault('V',5)
print(roman_nums)
- 用Counter统计序列结构中出现次数最多的元素
#统计出现次数最多的元素 #首先引入该方法 from collections import Counter s='hello' print(Counter(s)) #法二 print([(x,s.count(x)) for x in set(s)])
- f-Strings (Python 3.6+)格式化字符串
name,major = "world","computer science"
s="Hello, %s. I major in %s." % (name,major)
s1="Hello, {}. I major in {}.".format(name, major)
s2=f"Hello, {name}. I major in {major}." #推荐用法
print(s,s1,s2,sep='n')
- join()实现子字符串的拼接
s=['H','e','l','l','o']
s1=''
for x in s:
s1+=x
print(s1)
s1=''.join(s)#推荐用法
print(s1)
- 字典合并的N种方法
#法一
x = {'a': 1, 'b': 2}
y = {'b': 10, 'c': 11}
x.update(y)
print(x)
#法二 Python3.9+
z = x | y
print(z)
#法三 Python3.5+
z = {**x, **y}
print(z)
#法四
z = dict(list(x.items()) + list(y.items()))
print(z)
如果喜欢,不忘了在微信文章的下面一键三连(分享,点赞和收藏)。关注微信公众号“乐享Python”。



