Python:列出初始化差异

Nop*_*ope 3 python list

我想要一个完整相同的列表,其中的东西将是一个字符串或数字.这两个列表的创建方式有区别吗?有什么隐藏我应该知道的吗?

list_1 = [0] * 10

list_2 = [0 for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来完成同样的任务?

提前致谢.

ogg*_*ggy 15

这取决于你的列表元素是否可变,如果是,则会有所不同:

>>> l = [[]] * 10
>>> l
[[], [], [], [], [], [], [], [], [], []]
>>> l[0].append(1)
>>> l
[[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
>>> l = [[] for i in range(10)]
>>> l[0].append(1)
>>> l
[[1], [], [], [], [], [], [], [], [], []]
Run Code Online (Sandbox Code Playgroud)

对于不可变元素,两者的行为是相同的.它们之间可能存在性能差异,但我不确定哪一个会表现得更快.

  • `>>> 导入 timeit >>> timeit.timeit("[0] * 10") 0.5434829189135002 >>> timeit.timeit("[0 for i in range(10)]") 1.7427103316054815` (4认同)