0

次のコードで 3 from y が削除されている理由がわかりません。エイリアシングの問題だと思いますが、x が削除されたときに y に番号を保持させる方法はありますか?

  x = []
  y = []

  for i in range (10):
      if i == 5:
          y.append(x)
          del x[3]
       x.append(i)

print (x)
print (y)

出力:

x = [0, 1, 2, 4, 5, 6, 7, 8, 9]
y = [[0, 1, 2, 4, 5, 6, 7, 8, 9]]
4

1 に答える 1

1

xのコピーを yに追加する必要があります。

y.append(x[:])

y.append(x)によって参照されるリストを追加するxので、y基本的には[x]です。xに含まれているのはyであり、他のリストではないため、 を変更すると の値がy変更されますx

また、xネストされたリストの場合は、次のようにディープコピーを取得することを検討してください。x

import copy
y.append(copy.deepcopy(x))

そのため、ネストされたリストのそれぞれはコピーであり、 の同じリストではありませんx

于 2013-02-01T23:34:48.343 に答える