在单行中使用for循环:
%%time
y = [x*2 if x%2 != 0 else x+2 for x in range(10000000)]
CPU times: user 1.27 s, sys: 150 ms, total: 1.42 s
Wall time: 1.42 s
在多行中使用for循环:
%%time
y =[]
for x in range(10000000):
if x%2 != 0:
y.append(x*2)
else:
y.append(x+2)
CPU times: user 2.45 s, sys: 198 ms, total: 2.65 s
Wall time: 2.65 s
为什么第二个for循环需要更多时间?两者都在做同一件事。
答案 0 :(得分:1)
这是因为追加到列表将导致该列表多次扩展空间。立即保留此所需空间将节省扩展成本。
尝试一下:
y = [0] * 10000000
for x in range(10000000):
if x % 2 != 0:
y[x] = x*2
else:
y[x] = x+2