Подтвердить что ты не робот

Как добавить в конец пустого списка?

У меня есть список:

list1=[]

длина списка не определена, поэтому я пытаюсь добавить объекты в конец списка1, например:

for i in range(0, n):

    list1=list1.append([i])

Но мой вывод продолжает давать эту ошибку: AttributeError: объект "NoneType" не имеет атрибута "добавить"

Это потому, что list1 начинается как пустой список? Как исправить эту ошибку?

4b9b3361

Ответ 1

append фактически изменяет список. Кроме того, требуется элемент, а не список. Следовательно, все, что вам нужно, это

for i in range(n):
   list1.append(i)

(Кстати, обратите внимание, что в этом случае вы можете использовать range(n).)

Я предполагаю, что ваше фактическое использование более сложное, но вы можете использовать понимание списка, которое для этого более питонова:

list1 = [i for i in range(n)]

Или, в этом случае, в Python 2.x range(n) на самом деле создает список, который вы хотите уже, хотя в Python 3.x вам нужно list(range(n)).

Ответ 2

Вам не нужен оператор присваивания. append возвращает None.

Ответ 3

Микола имеет правильный ответ, но немного больше объяснений. Он будет работать в первый раз, но поскольку append возвращает None, после первой итерации цикла for ваше присваивание приведет к list1 равному None, и поэтому ошибка будет выбрана на второй итерации.

Ответ 4

append возвращает None, поэтому на второй итерации вы вызываете метод append из NoneType. Просто удалите назначение:

for i in range(0, n):
    list1.append([i])

Ответ 5

Я лично предпочитаю оператор +, чем append:

for i in range(0, n):

    list1 += [[i]]

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

Ответ 6

Как сказал Микола, append() возвращает пустоту, поэтому каждую итерацию вы устанавливаете list1 в nonetype, потому что append возвращает nonetype. На следующей итерации list1 имеет значение null, поэтому вы пытаетесь вызвать метод append null. У Nulls нет методов, следовательно, ваша ошибка.

Ответ 7

Обратите внимание, что вы также можете использовать вставку, чтобы поместить номер в нужную позицию в списке:

initList = [1,2,3,4,5]
initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5]

А также обратите внимание, что в python вы всегда можете получить длину списка, используя метод len()

Ответ 8

используйте my_list.append(...) и не использовать, а другой список для добавления в список можно изменить.