【发布时间】:2012-11-25 15:15:09
【问题描述】:
可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
Python - Using the Multiply Operator to Create Copies of Objects in Lists
当我追加到另一个列表中的列表时,Python 的行为出乎意料。这是一个例子:
>>> _list = [[]] * 7
>>> _list
[[], [], [], [], [], [], []]
>>> _list[0].append("value")
我的期望:
>>> _list
[['value'], [], [], [], [], [], []]
我得到了什么:
>>> _list
[['value'], ['value'], ['value'], ['value'], ['value'], ['value'], ['value']]
这是为什么?我该如何绕过它?
【问题讨论】:
-
@Jacob 我在这里没有看到默认参数......这是一个类似的效果,但不一样。