在Python中初始化一个特定长度的列表
我想知道怎么在Python里创建一个包含10个默认值的列表。
我在找一种好看的方法来初始化一个空列表,并且希望这个列表有特定的长度。比如说,我想要一个包含10个零的列表,这样我就能确保我的列表长度是固定的。
3 个回答
56
在2012年的PyCon大会上,Raymond Hettinger在讲解Python的核心容器内部结构时,建议使用[None] * n
来预先分配你想要的长度。
这里有PPT的幻灯片,或者你可以通过Google搜索找到相关内容。
整个幻灯片内容非常有趣。这个演讲在YouTube上也可以找到,不过它对幻灯片的内容补充不多。
192
列表相乘是可以的。
>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
378
如果你想要的“默认值”是不可变的,比如@eduffy的建议,使用 [0]*10
就可以了,这样是没问题的。
但是如果你想要的是十个 dict
(字典),千万不要用 [{}]*10
,这样会得到一个列表,里面有十个完全相同的空字典,而不是十个不同的字典。正确的做法是用 [{} for i in range(10)]
或类似的写法,这样可以创建十个独立的 dict
,放进你的列表里。