Добавление списка Python не работает на нарезанных списках - PullRequest
4 голосов
/ 06 октября 2019

У меня есть список a = [1,2,3,4,5]

Я не понимаю, почему следующий код не дает [2,3,4,5,1]

a[1:].append(a[0])

Я попытался прочитать метод append (), а также нарезку списка в Python, но не нашел удовлетворительного ответа.

Ответы [ 3 ]

4 голосов
/ 06 октября 2019

a[1:] дает вам совершенно новый list, но вы не присваиваете его какой-либо переменной, поэтому он просто выбрасывается после этой строки. Вы должны присвоить его чему-либо (скажем, b), а затем добавить к нему (в противном случае append изменит список, но ничего не вернет):

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

И теперь b - ваш желаемый результат[2,3,4,5,1]

1 голос
/ 06 октября 2019

Я думаю, что здесь вы просто не совсем понимаете append функцию. Как и мой ответ в Передача переменной из одного файла в другой в качестве переменной класса после встроенного изменения , append - это операция на месте, которая просто обновляет исходный список и возвращает None.

Ваш цепной вызов a[1:].append(a[0]) вернет значение возврата последнего вызова в цепочке, поэтому верните append значение функции, которое равно None.

Как и комментарий @flakes в другом ответе, a[1:] + a[:1] вернет целевое значение. Также вы можете попробовать a[1:][1:][1:], который вернет некоторый результат. Таким образом, ключевым моментом является то, что функция append находится на месте.

См. python в списке

Возможно, вы заметили, что такие методы, как вставка, удалить или отсортировать, которые только изменяют список, не имеют возвращаемого значения - they return the default None. 1 Это принцип проектирования для всех изменяемых структур данных в Python.

0 голосов
/ 06 октября 2019

Сначала добавьте первый элемент a [0] в список

a.append(a[0])

, а затем исключите первый элемент

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