Я застрял в проблеме в Python. Я хочу добавить список переменных в список, чтобы иметь несколько списков, таким образом (это пример):

legal = [1, 2, 3, 4, 5]
state = [0, 9]
for p in legal:
    new = state
    new.append(p)
    print(new)

Вывод у меня с этим кодом:

[0, 9, 1]
[0, 9, 1, 2]
[0, 9, 1, 2, 3]
[0, 9, 1, 2, 3, 4]
[0, 9, 1, 2, 3, 4, 5]

Выходной я ищу:

[0, 9, 1]
[0, 9, 2]
[0, 9, 3]
[0, 9, 4]
[0, 9, 5]

Есть ли способ сохранить исходный список, не переопределяя его в цикле?

0
Valentin Cnt 25 Июн 2019 в 19:26

3 ответа

Лучший ответ

Измените цикл for, чтобы каждый раз создавать новый список

for p in legal:
    new = state + [p]
    print(new)
0
CoryKramer 25 Июн 2019 в 16:27
legal = [1, 2, 3, 4, 5]
state = [0, 9]
for p in legal:
    print(state + [p])

Когда вы вызываете .append (val) для списка, он делает это на месте и обновляет исходный список. Так что лучшим способом было бы создать новый список внутри цикла,

for p in legal:
    tempList = state + [p]
    print(tempList)
1
Vaibhav Sharma 25 Июн 2019 в 16:28

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

Это способ создания списков, как вы идете.

Вот то, что создаст список ваших списков

output = [state + [i] for i in legal]

Это то, с чем вы можете поиграть позже в своем коде, если вам нужно.

Затем напечатать их все вы можете написать

for list in output: print list

Который распечатает ваш вывод.

Надеюсь это поможет! Здесь есть и другие ответы, но использование понимания списков - отличный способ сделать что-то в Python :)

0
Ash Oldershaw 25 Июн 2019 в 16:52