鱼C论坛

 找回密码
 立即注册
查看: 2730|回复: 6

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

[复制链接]
发表于 2018-11-4 18:43:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hhzczy 于 2018-11-4 19:20 编辑
  1. >>> selfref_list = [1, 2, 3]
  2. >>> selfref_list.append(selfref_list)
  3. >>> selfref_list
  4. [1, 2, 3, [...]]
复制代码


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

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

  2. # 使用pickle模块将数据对象保存到文件
  3. data1 = {'a': [1, 2.0, 3, 4+6j],
  4.          'b': ('string', u'Unicode string'),
  5.          'c': None}

  6. selfref_list = [1, 2, 3]
  7. selfref_list.append(selfref_list)

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

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

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

  13. output.close()
复制代码
最佳答案
2018-11-4 23:36:25
小老弟,这玩法我搞过,
是这样的,
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[...]]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-4 18:55:02 | 显示全部楼层
哪有自己append自己的,那不是无限嵌套
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-4 19:00:42 | 显示全部楼层
塔利班 发表于 2018-11-4 18:55
哪有自己append自己的,那不是无限嵌套

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

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

而且多次运行后仍然这样:
  1. >>> selfref_list = [1, 2, 3]
  2. >>> selfref_list.append(selfref_list)
  3. >>> selfref_list
  4. [1, 2, 3, [...]]
  5. >>> selfref_list
  6. [1, 2, 3, [...]]
  7. >>> selfref_list
  8. [1, 2, 3, [...]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-4 19:10:43 | 显示全部楼层
是没报错,但是除非你特殊使用,不建议这么玩
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-4 23:36:25 | 显示全部楼层    本楼为最佳答案   
小老弟,这玩法我搞过,
是这样的,
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[...]]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-5 08:21:23 From FishC Mobile | 显示全部楼层
前路 发表于 2018-11-4 23:36
小老弟,这玩法我搞过,
是这样的,
selfref_list = [1, 2, 3]

讲的好,顶一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-5 21:27:46 | 显示全部楼层
客气客气,这里的大神超多,我们以后可以常来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 21:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表