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

在Python中将列表初始化为特定长度,python,list,Python,List,在Python中,如何使用10倍的默认值初始化列表 我正在寻找一种好看的方法来初始化具有特定范围的空列表。 因此,请创建一个包含10个零或其他内容的列表,以确保我的列表具有特定的长度。列表乘法有效 >>> [0] * 10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 如果您想要的“默认值”是不可变的,@eduffy的建议,例如[0]*10,就足够了 但是,如果你想要一个包含十个dicts的列表,不要使用[{}]*10——这会给你一个列表,其中相同的初始为空d

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

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

列表乘法有效

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


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

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

整个幻灯片非常有趣。
第二种方法是,但它不会给幻灯片增加太多内容。

或[{}for uuuuuuuuin range(10)]避免lint警告类似于[0]*10的方法不是创建2d列表的方法。如果您创建一个列表
l=[[0]*10]*10]
,尝试更改
l[0][0]=100
,您会发现l[1][0]、l[2][0]。。。l[9][0]都设置为100。这是因为
*
复制了对象的引用。只需点击那个。用[[''表示范围(5)中的i]表示范围(5)]中的j,而不是>>>卡片字符串=[['']*5]*5>>>卡片字符串[0][0]=“这是出乎意料的…”