Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26347
  • 博文数量: 5
  • 博客积分: 225
  • 博客等级: 二等列兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-08 23:29
文章分类

全部博文(5)

文章存档

2008年(5)

我的朋友
最近访客

分类: Python/Ruby

2008-07-27 06:00:22

最近看了“中莽” 上的一片文章: “一切从游戏开始”是一个很好的通过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当成是局部变量,并不存储在字典的内部结构当中。
真是失败啊!一晚上也没有找到相关的资料!待发完贴之后看大牛的了!
 
 
 
阅读(4075) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~