Я пытался создать список (для рекурсивных целей), который не содержал бы индекс этого списка [1]. Однако, когда я попытался сделать это, создав экземпляр пустого списка и затем добавив к нему оставшуюся часть списка, вывод показывает, что список пуст. Мне было интересно, была ли конкретная причина или концепция, почему он не создавал специальный список, который я хотел.

a = [1,2,3,4,5]
print(list().append(0).append(a[1:]))

Выход должен быть [1,3,4,5], но вместо этого «Нет».

Конечно, я мог бы создать функцию и собрать ее воедино, но это не так интуитивно и элегантно.

-1
Jackson Ennis 26 Июн 2019 в 23:50

5 ответов

Лучший ответ

Ass @Daniel Roseman сказал, функция добавления возвращает None.

Если я понимаю, чего вы хотите достичь, создайте небольшую функцию и просто сделайте:

a = [1,2,3,4,5]

def addAndReturn(ls, elem):
  ls.append(elem)
  return ls

print(addAndReturn(addAndReturn(list(), 0), a[1:]))

Результат:

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

1
Damián Rafael Lattenero 26 Июн 2019 в 21:00

Прочитайте документацию. append - это метод класса list, который изменяет объект. У него нет возвращаемого значения; None по умолчанию. Ваше выражение сводится к

print(None.append([2, 3, 4, 5]))

Который, в свою очередь, имеет возвращаемое значение None. Вы можете сделать свой новый список просто с

new_list = a[1:]
2
Prune 26 Июн 2019 в 20:55

append добавляется в список и возвращает None. Вы должны сохранить этот новый список в переменной, а затем распечатать его. Например.

newlist = list() # or just[]
newlist.append(0)
newlist.extend(a[1:]) # OP had append, but you probably meant "extend"
print(newlist)
1
Mureinik 26 Июн 2019 в 20:54

Метод append добавляет элемент к своему объекту, но возвращает None. То, что вы хотите, это дополнение списка:

print(list() + [0] + [a[1:]])
1
Serge Ballesta 26 Июн 2019 в 20:55

Вам нужно будет создать новый список и расширить его оттуда:

b = [0]
b.extend(a[1:]) 
1
mfessenden 26 Июн 2019 в 20:57