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 如何在这两点之间改变,据我所知,没有做任何可能改变 liveCoords 的事情,但它正在被改变。

4

1 回答 1

1

你是liveCoords2用这条线创作的liveCoords2 = liveCoords吗?如果是这样,那么它们都是对同一个列表的引用,因此添加或删除元素liveCoords2也会影响liveCoords

如果是这种情况,那么将分配更改为liveCoords2 = list(liveCoords)orliveCoords2 = liveCoords[:]将解决此问题。请注意,这两种方法都将创建浅拷贝,如果其中的任何元素listCoords是可变对象,那么listCoords2将引用与 相同的对象listCoords,这对于您当前的代码应该没问题,但如果您最终需要创建深层副本可以使用复制模块:

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