Skip to main content
 首页 » 编程设计

python之将列表设置为 10,000 个空白值然后填充或附加到空列表会更快吗

2025年05月04日9haluo1

如果我有一个长度为 10,000 的列表,是否更快:

  1. 制作一个空白列表,然后附加到它。

或者

  1. 制作一个包含 10,000 个空白条目的列表,并将每个条目设置为数据。

示例代码

# first case  
a=[] 
for i in range(10000): 
    a.append(input()) 
# second case 
a= [0]*10000 
for i in range(10000): 
    a[i] = input() 

请您参考如下方法:

timeit模块非常适合测试这类事情:

# first case 
def test1(): 
    a=[] 
    for i in range(10000): 
        a.append(1) 
# second case 
def test2(): 
    a= [0]*10000 
    for i in range(10000): 
        a[i] = 1 
 
#list comprehension 
def test3(): 
    a = [1 for _ in range(10000)] 
 
import timeit 
n = 10000 
print("appending:    ",timeit.timeit(test1,number=n)) 
print("assigning:    ",timeit.timeit(test2,number=n)) 
print("comprehension:",timeit.timeit(test3,number=n)) 

输出:

appending:     13.14265166100813 
assigning:     8.314113713015104 
comprehension: 6.283505174011225 

根据要求,我将 timeit.timeit(...) 替换为 sum(timeit.repeat(..., repeat=7))/7 以获得平均时间得到这个结果:

appending:     12.813485399578765 
assigning:     8.514678678861985 
comprehension: 6.271697525575291 

这与我最初的结果并没有太大的不同。