5
t0 = [[]] * 2                                                                   
t1 = [[], []]                                                                   

t0[0].append('hello')                                                           
print t0                                                                        

t1[0].append('hello')                                                           
print t1             

结果是

[['hello'], ['hello']]
[['hello'], []]

但我分不清他们的区别。

4

2 回答 2

10

当您这样做时[[]] * 2,它会为您提供一个包含两个相同列表的列表,而不是两个列表。就像这样做:

a = []
b = [a, a]

制作包含多个不同空列表(或其他可变对象)的列表的常用方法是:

t1 = [[] for _ in range(5)]
于 2013-05-24T02:47:29.787 回答
7
[[]] * 2 

做一个浅拷贝。相当于:

x = []
t0 = [x, x]

然而

t1 = [[], []]

使用两个单独的空列表文字,它们完全不同,因此改变一个显然不会改变另一个

于 2013-05-24T02:48:15.377 回答