我有一个列表= [1,2,3,4,5]
我不明白为什么下面的代码不产生[2,3,4,5,1]
a[1:].append(a[0])
我尝试读取append()方法以及Python中的列表切片,但未找到满意的响应。
a[1:]
为您提供了一个全新的list
,但您没有将其分配给任何变量,因此它仅在该行之后被丢弃。您应该将其分配给某个内容(例如b
),然后追加到该内容(否则append
将更改列表,但不返回任何内容):
a = [1,2,3,4,5]
b = a[1:]
b.append(a[0])
现在b
是您想要的输出[2,3,4,5,1]
我认为您只是不太了解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
功能是就地功能。
[您可能已经注意到,仅修改列表的插入,删除或排序之类的方法没有打印返回值–
they return the default None
。 1这是Python中所有可变数据结构的设计原则。
首先,将第一个元素a [0]附加到列表中
a.append(a[0])
然后排除第一个元素
a[1:]