Перестановки списка объектов не являются независимыми друг от друга в Python - PullRequest
0 голосов
/ 06 марта 2019

Использование 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"

Проблема в том, что когда я заканчиваю с первой перестановкой и начинаю вторую перестановку, эта вторая перестановка сохраняет состояния первой перестановки. То есть во второй перестановке самолет с нулевым топливом уже приземляется.

Я переставляю ссылки на объекты? Если это так, мне нужно изменить фактические объекты.

Как мне создать список перестановок, чтобы, если я изменяю объекты в одной перестановке, она не изменяла никакую другую перестановку?

1 Ответ

1 голос
/ 06 марта 2019

Вы можете создавать копии объектов

airplaneListOrderingsnew =[]
import copy
for objects in airplaneListOrderings:
    airplaneListOrderingsnew.append(map(copy.copy,objects))
...