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

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

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

結果は

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

しかし、私はそれらの違いを見分けることができません。

4

2 に答える 2

10

を実行すると、2 つのリストではなく、同じリストの[[]] * 22 つを含むリストが表示されます。それは次のようなものです:

a = []
b = [a, a]

いくつかの異なる空のリスト (または他の可変オブジェクト)を含むリストを作成する通常の方法は、次のようにすることです。

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

浅いコピーを作成します。に相当:

x = []
t0 = [x, x]

でも

t1 = [[], []]

2 つの別個の空のリスト リテラルを使用します。これらは完全に異なるため、一方を変更しても、明らかに他方は変更されません。

于 2013-05-24T02:48:15.377 に答える