使用Python 2.7。
我在列表中有四个不同的自定义“飞机”对象,每个对象都有自己独特的属性。
根据我的要求,我需要生成所有可能的飞机订单排列:
# airplaneList = list of 4 airplane objects
airplaneListOrderings = list(itertools.permutations(airplaneList))
根据每个排列,我通过我的程序运行置换列表并在此过程中更改飞机属性,例如:
for permutation in airplaneListOrderings:
for plane in permutation:
if plane.fuel = 0:
plane.state = "landing"
else:
plane.state = "waiting"
问题是,当我完成第一个排列并开始第二个排列时,第二个排列会保存第一个排列的状态。也就是说,在第二种排列中,具有0燃料的平面已经着陆。
我是否会置换对象参考?如果是这样,我需要重新排列实际对象。
如何创建排列列表,以便如果我在一个排列中更改对象,它不会更改任何其他排列?
您可以创建对象的副本
airplaneListOrderingsnew =[]
import copy
for objects in airplaneListOrderings:
airplaneListOrderingsnew.append(map(copy.copy,objects))