Как вы помещаете вывод цикла for в список на Python? - PullRequest
0 голосов
/ 22 января 2019

Если взять в качестве примера простой цикл for:

for num in range(0,6)
print(num)

это дает мне:

0
1
2
3
4
5

Как я могу получить вывод в виде списка, например:

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

Если я сделаю это:

lst = []
for num in range(0,6):
    lst.append(num)
    print(lst)

Я получаю:

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

Шесть списков, но мне нужен только последний.

Ответы [ 6 ]

0 голосов
/ 22 января 2019

Цикл print внутри цикла в вашем коде вызывается для каждого значения num, что означает, что вы начинаете цикл for, добавляете num к lst и печатаете lst. Решением является печать lst после добавления всего значения num к lst, вы можете поставить print вне for

lst = []
for num in range(0,6):
    lst.append(num)
print(lst)
0 голосов
/ 22 января 2019

Если вы хотите поместить для вывода в список, ваш код был правильным. Вы только положили «печать» в неправильном месте.

Просто замените это:

lst = []
for num in range(0,6):
    lst.append(num)
    print(lst)

к этому:

lst = []
for num in range(0,6):
    lst.append(num)
print(lst)

Но есть более эффективные способы составить список из диапазона номеров, это было показано в других комментариях.

0 голосов
/ 22 января 2019

это ваш текущий код

lst = []
for num in range(0,6):
    lst.append(num)
    print(lst)

Как вы можете видеть, ваш оператор print(lst) имеет отступ внутри цикла, поэтому он печатает lst каждые num in range(0,6).Чтобы это исправить, переместите его за пределы цикла, чтобы вы печатали только результат / последний!

lst = []
for num in range(0,6):
    lst.append(num)
print(lst) # Un-indent :D

Счастливое кодирование, удачи

0 голосов
/ 22 января 2019

после завершения цикла for, затем используйте print

lst = []
for num in range(0,6):
    lst.append(num)
print(lst)
0 голосов
/ 22 января 2019

Один способ сделать с помощью list-comprehension

print([i for i in range(6)])

Что не так с вашим кодом

  • Сначала вы пытаетесь напечатать отдельные элементы там, где вы хотите вывод в виде списка
  • Во 2-й попытке вы просто поместили оператор print внутри цикла в то время как это должно быть за пределами for loop.
0 голосов
/ 22 января 2019

Просто сделайте list, чтобы сделать его списком:

print(list(range(6)))

Вывод:

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

Ваш код не работает, потому что:

  • Потому что вы print каждый раз, когда цикл повторяется, поэтому ваш код работает, если вы делаете print(lst) вне цикла

  • Ваш окончательный список на самом деле вашожидаемый список, я вам говорю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...