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

时间:2019-06-26 20:50:25

标签: python list

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

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

输出应为[1、3、4、5],但应为“无”。

当然,我可以创建一个函数并将其组合在一起,但是感觉并不那么直观或优雅。

5 个答案:

答案 0 :(得分:2)

阅读文档。 appendlist类方法,可更改对象。它没有返回值; None是默认设置。您的表情会减少为

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

反过来,其返回值为None。 您只需使用

即可创建新列表
new_list = a[1:]

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

您需要创建一个新列表,然后从那里扩展它:

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

答案 4 :(得分:1)

屁股@Daniel Roseman说过,append函数返回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]]