丨游戏灬需要 发表于 2020-7-19 17:07:40

一个关于列表"bug"的问题

>>> a =['qwe']
>>> a.append(a)
>>> a
['qwe', [...]]


所以请问a里面的   […]是这么来的?

Twilight6 发表于 2020-7-19 17:07:41

本帖最后由 Twilight6 于 2020-7-19 18:20 编辑



你试着运行下这个代码就知道 [...] 是什么:

a =['qwe']
a.append(a)

# 打印 a 列表
print(a)

# 打印 a 列表的第一个元素
print(a)

# 打印 a 列表的第二个元素
print(a)
输出结果:
['qwe', [...]]
qwe
['qwe', [...]]

发现打印 a 列表的第二个元素和直接打印 a 列表效果相同

而为什么要这样表示呢?

只要我们想想,如果按照原本的显示,就会变成无限套娃了

也就是列表里面有原本本身,而原本列表的本身里面有原本列表的本身的本身列表..... 一直无限下去

所以 Python 因为循环的无限次,所以 Python 用 [...] 来表示

举个例子:

你的列表 ['qwe'] 里面添加列表本身,那么就是这样的 ['qwe',['qwe',['qwe',['qwe',['qwe'],[...]]]]] 一直下去

你可以在试试这个代码:

a =['qwe']
a.append(a)

print(a) # 类似无限递归

输出结果:
['qwe', [...]]

实际上在列表里添加列表本身,会形成类似无限递归的效果


陈尚涵 发表于 2020-7-19 17:25:27

这个不是bug,是Python的一个特例。[...]表示这个列表本身,我也不知道最新的Python版本为什么要搞成这样
你就给我设置最佳,看着35个鱼币,我眼馋啊,谁让我从来不充值呢{:10_257:}

Tip0 发表于 2020-7-19 18:25:14

楼上大佬正解,学习到了

fishc_伟 发表于 2020-7-19 18:40:14

这种类似递归,list.append()方法的时候,会改变自身内存结构,也就是重新分配,当a变量追加a变量的时候,发现a变量正在使用,然后等待上一个a执行结束.然后每一个都如此.希望你能明白

zltzlt 发表于 2020-7-19 19:31:07

本帖最后由 zltzlt 于 2020-7-19 21:25 编辑

这不叫 Bug,实际上这是无限递归列表。可以使用 a.append(a[:]) 避免无限递归:

>>> a =
>>> a.append(a[:])
>>> a
]

liuzhengyuan 发表于 2020-7-19 21:15:45

你可以 使用 append(a[:])避免递归

昨非 发表于 2020-7-20 10:20:13

语法规则,列表嵌套自身时显示为[...]

_2_ 发表于 2020-7-20 11:19:04

Twilight6 发表于 2020-7-19 18:15
你试着运行下这个代码就知道 [...] 是什么:




从来没试过,好好玩的样子{:10_257:}

bangbang-ande 发表于 2020-7-21 20:08:57

Twilight6 发表于 2020-7-19 18:15
你试着运行下这个代码就知道 [...] 是什么:




太厉害了,佩服

石泊远 发表于 2020-7-21 22:41:41

Twilight6 发表于 2020-7-19 18:15
你试着运行下这个代码就知道 [...] 是什么:




oooo
我懂了,是不是就是c语言内的链表
一旦动用了他,就会一直重复下去
我说的对吗

公爵黑卡 发表于 2020-7-22 11:40:23

因为嵌套的是自身,所以对嵌套中任意一级的元素进行修改时,基本元素也就跟着改变

nahongyan1997 发表于 2020-7-22 11:49:20

陈尚涵 发表于 2020-7-19 17:25
这个不是bug,是Python的一个特例。[...]表示这个列表本身,我也不知道最新的Python版本为什么要搞成这样
...

还能减{:10_245:}

UncleMonster 发表于 2020-7-23 13:29:35

zltzlt 发表于 2020-7-19 19:31
这不叫 Bug,实际上这是无限递归列表。可以使用 a.append(a[:]) 避免无限递归:

学到了,拿小本子记下来{:10_298:}

zltzlt 发表于 2020-7-23 13:30:36

UncleMonster 发表于 2020-7-23 13:29
学到了,拿小本子记下来

{:10_297:}

UncleMonster 发表于 2020-7-23 13:40:02

zltzlt 发表于 2020-7-23 13:30


有时候逛逛问题帖也能学到很多东西{:10_297:}
页: [1]
查看完整版本: 一个关于列表"bug"的问题