对象列表排列在python中不是彼此独立的

问题描述 投票:0回答:1

使用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燃料的平面已经着陆。

我是否会置换对象参考?如果是这样,我需要重新排列实际对象。

如何创建排列列表,以便如果我在一个排列中更改对象,它不会更改任何其他排列?

python python-2.7 permutation
1个回答
1
投票

您可以创建对象的副本

airplaneListOrderingsnew =[]
import copy
for objects in airplaneListOrderings:
    airplaneListOrderingsnew.append(map(copy.copy,objects))
© www.soinside.com 2019 - 2024. All rights reserved.