Skip to main content
 首页 » 编程设计

python之Python 迭代哪种方法更快

2025年05月04日15powertoolsteam

我正在根据不等于 None 的特定值从一个大型旧列表创建一个新列表。哪种迭代方法更快?

选项 1:

new_list = [] 
for values in old_list: 
   if values[4] is not None: 
       new_list.append(values[4]) 

选项 2:

new_list = [x for x in old_list if x[4] is not None] 

请您参考如下方法:

尝试timeit两者。

但第二个是广泛known to be faster .

基本上 map 比 list comprehension 快,list comprehension 比 for loop 快。

网络上有大量关于这个主题的文献。

编辑:

我 promise 更新会带来实际、有形的结果。这是代码。

import random 
import timeit 
 
old_list = [ random.randint(0, 100000) for i in range(0, 100) ] 
 
 
def floop(old_list): 
    new_list = [] 
    for value in old_list: 
        new_list.append(value) 
    return new_list 
 
 
def lcomp(old_list): 
    new_list = [ value for value in old_list ] 
    return new_list 
 
 
if __name__=='__main__': 
    results_floop = timeit.Timer('floop(old_list)', "from __main__ import floop, old_list").timeit() 
    results_lcomp = timeit.Timer('lcomp(old_list)', "from __main__ import lcomp, old_list").timeit() 
    print("Function\t\tSeconds elapsed") 
    print("For loop\t\t{}".format(results_floop)) 
    print("List comp\t\t{}".format(results_lcomp)) 

记住:timeit 循环调用函数 100 万次并打印耗时(以秒为单位)。像这样阅读执行 100 万次,用了 xx 秒。

这是结果。我认为他们自己会说话。

~/python » python3 lists.py 
Function        Seconds elapsed 
For loop        11.089475459069945 
List comp       5.985794545034878