0
  print liveCoords                                      # displays [(0,0),(1,0),(2,0)]
  if population > 3 or population < 2:
      if (j,i) in liveCoords:
          try:
              del liveCoords2[liveCoords2.index((j,i))]
          except:
              pass
  elif population == 3:
      if (j,i) in liveCoords:
          pass
      else:
          liveCoords2.append((j,i))
  print liveCoords                                       # displays [(1,0),(2,0)]

私の質問は、特定のことを行う方法についてではなく、リストの liveCoords をこれらの 2 つのポイントの間で変更する方法です。

4

1 に答える 1

1

liveCoords2という行で作成しましたliveCoords2 = liveCoordsか? その場合、それらは両方とも同じリストへの参照であるため、要素の追加または削除も同様liveCoords2に影響liveCoordsします。

この場合、割り当てをliveCoords2 = list(liveCoords)orに変更すると、liveCoords2 = liveCoords[:]これが修正されます。これらのメソッドは両方とも浅いコピーを作成することに注意してください. の要素listCoordsが可変オブジェクトである場合listCoords2、 と同じオブジェクトへの参照がありますlistCoords.これは現在のコードでは問題ありませんが、最終的に深いコピーを作成する必要がある場合は、コピーモジュールを使用できます:

import copy
liveCoords2 = copy.deepcopy(liveCoords)
于 2012-04-25T22:58:33.530 に答える