我有一个列表:
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]
答案 0 :(得分:3)
mylist[0] = mylist
指向mylist的引用。您可以像这样
每个第一个元素都具有一个列表,该列表又具有另一个列表。并且这继续。
所以解决问题的方法是这样的
>>> 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]