Python列表附件不适用于切片列表

问题描述 投票:4回答:3

我有一个列表= [1,2,3,4,5]

我不明白为什么下面的代码不产生[2,3,4,5,1]

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

我尝试读取append()方法以及Python中的列表切片,但未找到满意的响应。

python list append slice
3个回答
3
投票

a[1:]为您提供了一个全新的list,但您没有将其分配给任何变量,因此它仅在该行之后被丢弃。您应该将其分配给某个内容(例如b),然后追加到该内容(否则append将更改列表,但不返回任何内容):

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

现在b是您想要的输出[2,3,4,5,1]


0
投票

我认为您只是不太了解append功能。就像我在Passing a variable from one file into another as a class variable after inline modification中的回答一样,append是就地操作,它只是更新原始列表并返回None。

您的链调用a[1:].append(a[0])将返回链中的最后一个调用返回值,因此返回append函数值,即None。

就像@flakes在另一个答案中一样,a[1:] + a[:1]将返回您的目标值。您也可以尝试a[1:][1:][1:],它将返回一些结果。因此关键是append功能是就地功能。

请参见python more on list

[您可能已经注意到,仅修改列表的插入,删除或排序之类的方法没有打印返回值– they return the default None。 1这是Python中所有可变数据结构的设计原则。


0
投票

首先,将第一个元素a [0]附加到列表中

a.append(a[0])

然后排除第一个元素

a[1:]
© www.soinside.com 2019 - 2024. All rights reserved.