t0 = [[]] * 2
t1 = [[], []]
t0[0].append('hello')
print t0
t1[0].append('hello')
print t1
结果是
[['hello'], ['hello']]
[['hello'], []]
但我无法区分它们。
答案 0 :(得分:10)
执行[[]] * 2
时,它会为您提供一个包含两个相同列表的列表,而不是两个列表。这就像在做:
a = []
b = [a, a]
制作包含多个不同空列表(或其他可变对象)的列表的常用方法是执行此操作:
t1 = [[] for _ in range(5)]
答案 1 :(得分:7)
[[]] * 2
使shallow copy.相当于:
x = []
t0 = [x, x]
然而
t1 = [[], []]
使用两个单独的空列表文字,它们是完全不同的,所以突变一个显然不会改变另一个