Python:将第一个元素更改为列表本身

时间:2018-09-22 09:26:24

标签: python list

我有一个列表:

mylist = [1,2,3]

我想将第一个元素更改为列表,因此将列表内的列表更改为列表。 我的第一次尝试:

mylist + mylist[1:]

给我

[1, 2, 3, 2, 3] # not what I want

第二次尝试

mylist[0]=mylist

给我

[[...], 2, 3] # is this an infinite list?

尽管我想要

[[1,2,3], 2, 3]

5 个答案:

答案 0 :(得分:3)

mylist[0] = mylist指向mylist的引用。您可以像这样enter image description here

看到它

每个第一个元素都具有一个列表,该列表又具有另一个列表。并且这继续。

所以解决问题的方法是这样的

>>> mylist = [1,2,3]
>>> mylist[0] = mylist[:]
>>> mylist
[[1, 2, 3], 2, 3]

答案 1 :(得分:2)

mylist[0] = mylist为您提供了一个包含自身的列表-表示mylist == mylist[0] == mylist[0][0] == mylist[0][0][0] == ...。听起来那不是您想要的。

从您提供的输出中,您的问题最好表示为:

  • 制作一个包含旧列表的新列表-mylist = [mylist] + mylist[1:]
  • 将列表的副本放入自身- {mylist[0] = mylist[:] mylist[0] = mylist.copy()

答案 2 :(得分:2)

使用:

temp = mylist
mylist[0] = temp[:]

答案 3 :(得分:2)

第二种尝试具有正确的想法,但是正如您所指出的,由于列表包含自身,因此在打印时将导致无限递归。通过预期的输出,您似乎想要克隆列表,可以使用切片非常优雅地完成此操作:

mylist[0] = mylist[:]

答案 4 :(得分:0)

您需要:

mylist = [1,2,3]

mylist[0] = list(mylist)
print(mylist)

输出:

[[1, 2, 3], 2, 3]