1

可能的重复:
Python 中的“Least Astonishment”:可变默认参数
Python - 使用乘法运算符在列表中创建对象的副本

当我追加到另一个列表中的列表时,Python 的行为出乎意料。这是一个例子:

>>> _list = [[]] * 7
>>> _list
[[], [], [], [], [], [], []]
>>> _list[0].append("value")

我的期望:

>>> _list
[['value'], [], [], [], [], [], []]

我得到什么:

>>> _list
[['value'], ['value'], ['value'], ['value'], ['value'], ['value'], ['value']]

为什么是这样?我怎样才能绕过它?

4

1 回答 1

4

您的问题是您的列表不包含七个独立的列表,而是七次相同的列表。

要创建列表列表,最好使用列表推导:

_list = [[] for _ in xrange(7)]

这将产生一个包含七个不同列表的列表。

于 2012-12-07T12:34:20.090 回答