<分区> 分区>
我遇到了几篇文章和 StackOverflow 讨论,其中通常建议在处理列表时使用列表理解。
我经常遇到一个常见的循环结构,我有一个列表,我必须处理它并将结果存储在一个新列表中。
所以类似(举个例子):
1) 创建一个大的字符串列表以达到目的
from random import choice
from string import ascii_uppercase
import time
oldlist = ([''.join(choice(ascii_uppercase)
for i in range(10)) for x in range(1000000)])
2) 使用循环、列表理解和映射对其进行处理 循环变体 1:
start_time = time.time()
newlist = []
for word in oldlist:
newlist.append(word.lower())
print(time.time()-start_time) # 0.1368732452392578
循环变体 2:
start_time = time.time()
newlist = []
append = newlist.append
for word in oldlist:
append(word.lower())
print(time.time()-start_time)# 0.1112520694732666
列表组件:
start_time = time.time()
newlist = [word.lower() for word in oldlist]
print(time.time()-start_time) # 0.07511067390441895
map :
start_time = time.time()
newlist = map(str.lower, oldlist)
print(time.time()-start_time) # 3.0994415283203125e-06
我可以假设在这种情况下 map 应该总是被使用,因为它比其他的更快吗?根据各种文章,列表推导式被认为更具可读性,但可读性应该是第一要务还是显着的速度?
注意:我只是取了五次迭代的平均值,因此这些时间值可能会略有变化。然而,它给了我们一个启示。 Python 版本:3
