"Python"学习笔记(八)(迭代)

什么是迭代(Iteration)

在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

l=[1,2,3,4,5]
for i in l:
    print ( i )

以上这种遍历就叫做迭代,但是Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上,因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。
注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str,unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict

索引迭代

Python中,迭代永远是取出元素本身,而非元素的索引。而在有序集合,元素是有索引的,如果我们想用for循环取出索引,就要用到 enumerate() 函数

l=['python','java','c++']
for index,name in enumerate(l):
    print( index,'   ', name)
输出结果:0     python
        1     java
        2     c++

可见enumerate函数输出了元素的索引和元素本身,使用for循环将index 与name绑定,但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把['python','java','c++']变成了[(0,'python'),(1,'java'),(2,'c++')]所以迭代的每一个元素其实是一个tuple,代码段应该是:

for i in enumerate(l):
    index=i[0]
    name =i[1]
    print( index,'   ', name)

当每个tuple都有两个元素时,我们的代码就可以简写成第一种形式。
所以索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

迭代dict

迭代dict的value
想要直接迭代的dict的value,可以使用values()方法,

f={'father':'Bob','mother':'Marry','son':'Jim'}
for i in f.values():
    print (i)
运行结果:Jim
        Bob
        Marry

还有一种itervalues()可以代替vlaues()方法,达到相同的目的

f={'father':'Bob','mother':'Marry','son':'Jim'}
for i in f.itervalues():
    print (i)

以上这种方法也可以达到效果。
values()与itervalues()的区别如下:
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
2. 打印 itervalues() 发现它返回一个 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

迭代dict的key和value
迭代dict中的key和value时要用的items()方法

f={'father':'Bob','mother':'Marry','son':'Jim'}
for i in f.items():
    print (i)
运行结果:('son', 'Jim')
        ('father', 'Bob')
        ('mother', 'Marry')

在Python中,items()将dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value。
这就是迭代。
Ps:累死了。。昨天就忘记更新了〒_〒。。。明天继续,fighting!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值