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

249

我如何在Python中用默认值初始化一个包含10个元素的列表?

我正在寻找一种好看的方法来初始化一个特定范围的空列表。 例如,创建一个包含10个零或其他相同默认值的列表,以确保我的列表具有特定的长度。

3个回答

377

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

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


29
为避免代码检查警告,请将代码写成以下形式:or [{} for _ in range(10)]。 - Martin Konecny
10
用类似 [0] * 10 的方式不是创建二维列表的正确方法。如果你用列表 l = [[0]*10]*10 创建一个列表,尝试修改 l[0][0] = 100,你会发现 l[1][0]、l[2][0]……l[9][0] 全部都变成了 100。这是因为 * 运算符复制的是对象的引用。 - John Wu
只需轻点一下。最终结果是[['' for i in range(5)] for j in range(5)],而不是>>> card_strings = [['']*5]*5
card_strings[0][0] = "好吧,这出乎意料..."
- RobotHumans

191

列表乘法有效。

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

56

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接