在Python中将列表初始化为特定长度

Jan*_*usz 224 python list

如何在Python中使用默认值的10倍初始化列表?

我正在寻找一种好看的方法来初始化具有特定范围的空列表.因此,请创建一个包含10个零或其他内容的列表,以确保我的列表具有特定长度.

Ale*_*lli 347

如果你想要的"默认值"是不可变的,@ eduffy的建议,例如[0]*10,就足够了.

但是如果你想,说,十个名单dictS,千万不能使用[{}]*10-这将让你与一个列表相同的最初为空的dict十倍,不是十个不同的.相反,使用[{} for i in range(10)]或类似的结构,构建十个单独的dicts来组成你的列表.

  • 或[{}为_在范围(10)中]以避免棉绒警告 (29认同)
  • 像[0]*10这样的东西不是创建2d列表的方法.如果你创建一个列表`l = [[0]*10]*10]`,尝试改变`l [0] [0] = 100`,你会发现l [1] [0],l [2] [0] ... l [9] [0]都设置为100.这是因为`*`复制了对象的引用. (7认同)

edu*_*ffy 164

列表乘法工作.

>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)


Pej*_*van 46

在PyCon 2012中关于Python核心容器内部的讨论中,Raymond Hettinger建议使用[None] * n预分配你想要的长度.

幻灯片以PPT谷歌的形式提供

整个幻灯片非常有趣.该演示文稿可在YouTube上获得,但不会对幻灯片添加太多内容.