【发布时间】:2011-03-10 21:56:08
【问题描述】:
A = [[]]*2
A[0].append("a")
A[1].append("b")
B = [[], []]
B[0].append("a")
B[1].append("b")
print "A: "+ str(A)
print "B: "+ str(B)
产量:
A: [['a', 'b'], ['a', 'b']]
B: [['a'], ['b']]
人们会期望 A 列表与 B 列表相同,但事实并非如此,两个 append 语句都应用于 A[0] 和 A[1]。
为什么?
【问题讨论】:
-
在这个线程中有一个非常好的解释 Python 的 * 运算符用于列表:stackoverflow.com/questions/974931/…
-
@S. Lott:对我来说似乎很清楚:两个非常相似的形式,[[]]*2 和 [[],[]] 在以相同方式操作时会产生非常不同的结果。为什么?
标签: python