我如何在Python中初始化一个10倍默认值的列表?

我正在寻找一个好看的方法来初始化一个具有特定范围的空列表。 所以做一个包含10个0的列表来确保我的列表有特定的长度。


当前回答

如果你想要的“默认值”是不可变的,@eduffy的建议就足够了,比如[0]*10。

但是,如果你想要一个包含10个字典的列表,不要使用[{}]*10——这将给你一个包含10次相同的初始空字典的列表,而不是10个不同的字典。相反,使用[{}for i in range(10)]或类似的构造,构造10个独立的字典来组成列表。

其他回答

如果你想要的“默认值”是不可变的,@eduffy的建议就足够了,比如[0]*10。

但是,如果你想要一个包含10个字典的列表,不要使用[{}]*10——这将给你一个包含10次相同的初始空字典的列表,而不是10个不同的字典。相反,使用[{}for i in range(10)]或类似的构造,构造10个独立的字典来组成列表。

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

幻灯片可作为PPT或通过谷歌

整个幻灯片很有趣。 该演示文稿可以在YouTube上找到,但它并没有为幻灯片添加太多内容。

列表乘法很有用。

>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]