Добавление различных переменных в список в цикле - PullRequest
0 голосов
/ 25 июня 2019

Я застрял в проблеме в 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]

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

Ответы [ 3 ]

1 голос
/ 25 июня 2019
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)
0 голосов
/ 25 июня 2019

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

Это способ создания списков по ходу работы.

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

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

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

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

for list in output: print list

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

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

0 голосов
/ 25 июня 2019

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

for p in legal:
    new = state + [p]
    print(new)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...