|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hhzczy 于 2018-11-4 19:20 编辑
- >>> selfref_list = [1, 2, 3]
- >>> selfref_list.append(selfref_list)
- >>> selfref_list
- [1, 2, 3, [...]]
复制代码
看到这样一段代码,列表把自己加进去。这是想干嘛。
而且结果为什么显示:[1, 2, 3, [...]]
而不是:[1, 2, 3, [1, 2, 3]]
==========================
来源是这段代码:
- import pickle
- # 使用pickle模块将数据对象保存到文件
- data1 = {'a': [1, 2.0, 3, 4+6j],
- 'b': ('string', u'Unicode string'),
- 'c': None}
- selfref_list = [1, 2, 3]
- 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()
复制代码
小老弟,这玩法我搞过,
是这样的,
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list) 按理说你想要的是不是selfref_kist = [1,2,3,[1,2,3]]这样呀!
实际呢是这样的 selfref_list = [1,2,3,selfref_list] 你有没有发现这个selfref_list随时都在改变,所以就相当于selfref_list.append(selfref_list)执行了一个递归:
说白一点就是自己追加自己,并且自己每追加一次自己都变了,按理说执行后是不会显示出来的
但是由于list长度的限制,所以不得不输出出来;再因为屏幕print显示的原因(因为太多了,我不想输出),无限循环的部分就成了[1,2,3[...]]
|
|