在Python中初始化一个特定长度的列表

250 投票
3 回答
334927 浏览
提问于 2025-04-15 12:11

我想知道怎么在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,放进你的列表里。

撰写回答