首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列表插入同一列表时省略

将列表插入同一列表时省略
EN

Stack Overflow用户
提问于 2021-04-24 04:41:25
回答 3查看 100关注 0票数 3

当我遇到这个问题时,我正试图找到一个问题的解决方案。我试图使用insert将一个列表插入到同一个列表中。但是我得到了一个新列表应该在哪里的...

插入相同的列表

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1)

奇怪的是,我得到了输出

代码语言:javascript
复制
[1, 2, [...], 3, 4]

插入唯一列表

现在假设我将一个唯一的列表插入到layer1中。

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer2 = [1,2]
layer1.insert(len(layer1)//2,layer2)
print(layer1)

如果没有...,我的输出就像预期的那样

代码语言:javascript
复制
[1, 2, [1, 2, 3], 3, 4]

期望输出

如何使用insert获得此输出?

代码语言:javascript
复制
[1, 2, [1, 2, 3, 4], 3, 4]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-24 04:57:53

省略的原因

您正在尝试将对象插入到位置2 (len(layer1)//2)的自身中。您可以考虑省略号 (.)作为指向对象本身的指针。

str / repr函数受到保护,以避免无限递归,并显示省略号(.)。请参考

--不可能打印随着插入自身而修改的对象,因为它将进入无限递归。想想看,如果您通过插入它自己来修改列表,那么您所引用的新更新列表也将插入到它自己中,因为您只是指向该对象。

如果您试图访问列表中的省略对象,这一点就很明显了-

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1)
print('list:',layer1)
print('ellipsis:', layer1[2])
代码语言:javascript
复制
list: [1, 2, [...], 3, 4]
ellipsis: [1, 2, [...], 3, 4]

原始列表中的任何更新也必须反映在插入的项中,反之亦然。因此,它被显示为省略号。

解析打印

一种解决这个问题的方法是使用一个拷贝-

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1[:]) #<--- slicing returns copy
layer1
代码语言:javascript
复制
[1, 2, [1, 2, 3, 4], 3, 4]

详细信息这里

票数 6
EN

Stack Overflow用户

发布于 2021-04-24 04:46:05

当您将1、2、3、4插入到它中时,您真正拥有的是:

代码语言:javascript
复制
layer1 = [1, 2, layer1, 3, 4]

如果您“打开”layer1 (点)以查看其中的内容,您将得到:

代码语言:javascript
复制
layer1 = [1, 2, [1, 2, layer1, 3, 4], 3, 4]

正如你所看到的,这将永远持续下去。这个列表是“自我参照”,它指的是自己。

相反,您需要制作列表的副本。

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1.copy())
票数 1
EN

Stack Overflow用户

发布于 2021-04-24 04:57:15

您正在通过向自身插入列表来创建自引用列表。它就像一个没有任何while(1)break

也许你可以用这个来达到你的目的:

代码语言:javascript
复制
layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1[:])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67239386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档