gpt4 book ai didi

python - 将列表插入同一列表时的省略号

转载 作者:行者123 更新时间:2023-12-05 01:07:36 32 4
gpt4 key购买 nike

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

插入相同的列表

layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1)

奇怪的是,我得到了输出

[1, 2, [...], 3, 4]

插入唯一列表

现在说我在 layer1 中插入一个唯一列表。

layer1 = [1,2,3,4]
layer2 = [1,2]
layer1.insert(len(layer1)//2,layer2)
print(layer1)

没有 ...

我的输出与预期一样
[1, 2, [1, 2, 3], 3, 4]

期望的输出

如何使用 insert

获得此输出
[1, 2, [1, 2, 3, 4], 3, 4]

最佳答案

省略号的原因

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

The str / repr functions have been protected against this to avoid infinite recursion, and show an ellipsis instead (...). Refer this.

无法打印已通过插入自身而修改的对象,因为它会进入无限递归。考虑一下,如果通过将自身插入到列表中来修改列表,则您所指的新更新列表也将被插入到自身中,因为您只是指向该对象。

如果您尝试访问列表中的省略号对象,这会变得很明显 -

layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1)
print('list:',layer1)
print('ellipsis:', layer1[2])
list: [1, 2, [...], 3, 4]
ellipsis: [1, 2, [...], 3, 4]

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


解决打印问题

解决此问题的方法是使用副本 -

layer1 = [1,2,3,4]
layer1.insert(len(layer1)//2,layer1[:]) #<--- slicing returns copy
layer1
[1, 2, [1, 2, 3, 4], 3, 4]

详情 here .

关于python - 将列表插入同一列表时的省略号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67239386/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com