hhzczy 发表于 2018-11-4 18:43:34

[1, 2, 3, [...]]这是什么东西

本帖最后由 hhzczy 于 2018-11-4 19:20 编辑

>>> selfref_list =
>>> selfref_list.append(selfref_list)
>>> selfref_list
]

看到这样一段代码,列表把自己加进去。这是想干嘛。
而且结果为什么显示:]
而不是:]

==========================
来源是这段代码:
import pickle

# 使用pickle模块将数据对象保存到文件
data1 = {'a': ,
         'b': ('string', u'Unicode string'),
         'c': None}

selfref_list =
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()

塔利班 发表于 2018-11-4 18:55:02

哪有自己append自己的,那不是无限嵌套

hhzczy 发表于 2018-11-4 19:00:42

塔利班 发表于 2018-11-4 18:55
哪有自己append自己的,那不是无限嵌套

http://www.runoob.com/python3/python3-inputoutput.html
但它并未报错啊。

我看不懂~~~~所以才来问…………

而且多次运行后仍然这样:
>>> selfref_list =
>>> selfref_list.append(selfref_list)
>>> selfref_list
]
>>> selfref_list
]
>>> selfref_list
]

塔利班 发表于 2018-11-4 19:10:43

是没报错,但是除非你特殊使用,不建议这么玩

前路 发表于 2018-11-4 23:36:25

小老弟,这玩法我搞过,
是这样的,
selfref_list =
selfref_list.append(selfref_list) 按理说你想要的是不是selfref_kist = ]这样呀!
实际呢是这样的 selfref_list = 你有没有发现这个selfref_list随时都在改变,所以就相当于selfref_list.append(selfref_list)执行了一个递归:
说白一点就是自己追加自己,并且自己每追加一次自己都变了,按理说执行后是不会显示出来的
但是由于list长度的限制,所以不得不输出出来;再因为屏幕print显示的原因(因为太多了,我不想输出),无限循环的部分就成了]

TPZS 发表于 2018-11-5 08:21:23

前路 发表于 2018-11-4 23:36
小老弟,这玩法我搞过,
是这样的,
selfref_list =


讲的好,顶一个

前路 发表于 2018-11-5 21:27:46

客气客气,这里的大神超多,我们以后可以常来
页: [1]
查看完整版本: [1, 2, 3, [...]]这是什么东西