Python 为什么不能复制列表并丢失列表的第一个索引?

Python 为什么不能复制列表并丢失列表的第一个索引?,python,list,Python,List,我试图创建一个不包含该列表的[1]索引的列表(出于递归目的)。然而,当我尝试这样做时,通过实例化一个空列表,然后将列表的其余部分附加到它,输出显示该列表是空的。我想知道为什么没有创建我想要的特别列表,是否有具体的原因或概念 a = [1,2,3,4,5] print(list().append(0).append(a[1:])) 输出应为[1,3,4,5],但改为“无” 当然,我可以创建一个函数并将其全部拼凑在一起,但感觉不那么直观和优雅。append附加到列表并返回None。您应该将此新列表

我试图创建一个不包含该列表的[1]索引的列表(出于递归目的)。然而,当我尝试这样做时,通过实例化一个空列表,然后将列表的其余部分附加到它,输出显示该列表是空的。我想知道为什么没有创建我想要的特别列表,是否有具体的原因或概念

a = [1,2,3,4,5]
print(list().append(0).append(a[1:]))
输出应为[1,3,4,5],但改为“无”


当然,我可以创建一个函数并将其全部拼凑在一起,但感觉不那么直观和优雅。

append
附加到列表并返回
None
。您应该将此新列表保存到变量中,然后打印它。例如

newlist = list() # or just[]
newlist.append(0)
newlist.extend(a[1:]) # OP had append, but you probably meant "extend"
print(newlist)

阅读文档
append
是一种改变对象的
list
类方法。它没有返回值<代码>无是默认值。你的表情变成了

print(None.append([2, 3, 4, 5]))
反过来,其返回值为
None
。 你可以简单地用

new_list = a[1:]

append
方法向其对象添加元素,但返回
None
。您需要的是列表添加:

print(list() + [0] + [a[1:]])

您需要创建一个新列表,并从中扩展它:

b = [0]
b.extend(a[1:]) 

Daniel Roseman说,append函数不返回任何值

如果我了解您想要实现的目标,请创建一个小函数并执行以下操作:

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,2,3,4,5]开始,你想要的输出是什么?它不起作用,因为
append
不返回任何值。你是说
打印([a[0]]+a[2:])
(输出
[1,3,4,5]
)?是的,这是我的错。