免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6671 | 回复: 0
打印 上一主题 下一主题

python元祖,列表,字典遍历赋值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-27 06:00 |只看该作者 |倒序浏览
最近看了“中莽” 上的一片文章: “一切从游戏开始”是一个很好的通过python来联系的例子,但是在练习的时候发现以前没有接触国的问题:在遍历元祖,列表,字典的时候赋值出现了问题,所以写了一些很短小的代码来找问题:
在字典中的遍历:
>>> d={1:2,3:4,6:7}
>>> for i in d:
...  print i
...  
1
3
6
>>> print i
6
>>> type(i)
>>> d={1:2,3:4,6:7}
>>> for i in d:
...  print i
...  
1
3
6
>>> i="haha"
>>> print d
{1: 2, 3: 4, 6: 7}
>>> type(i)
i最终是一个字符串。i的改变并未对字典d造成影响。
在列表中的遍历:
>>> l=[1,2,3,4,[6,7,8]]
>>> for i in l:
...  print i
...  
1
2
3
4
[6, 7, 8]
>>> print i
[6, 7, 8]
>>> i.append('hello python!!')
>>> print i
[6, 7, 8, 'hello python!!']
>>> type(i)
>>> l.append("haha")
>>> print i
[6, 7, 8, 'hello python!!']
>>> print l
[1, 2, 3, 4, [6, 7, 8, 'hello python!!'], 'haha']
这时i变成了列表,并且当i改变的时候列表l也改变了。
为什么同样是改变,列表或者元祖被改变而字典没有改变呢?
是内部存储的方式不一样呢?
还是因为字典是”无序“的所以在遍历完了以后不会发生前n-1个值都会都会被释放,而最后N被存储。?
是不是列表和元祖以及一些有序的数据结构才有这样的特点:“变量在用的时候才会出现,在遍历的时候,每遍历一个值便赋一次值,如果共有n个值那么前n-1个值都会都会被释放,直到第n个为止。并且把i作为内部元素来存储和处理”而在遍历字典的时候由于字典是无序的所以无所谓存储和释放,所以只是把i当成是局部变量,并不存储在字典的内部结构当中。
真是失败啊!一晚上也没有找到相关的资料!待发完贴之后看大牛的了!





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63049/showart_1093416.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP