| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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[...]] 
 
 
 |   
 
 
 
 |