学习Python笔记: 可迭代对象  迭代器  迭代工具  迭代环境

## 可迭代对象  迭代器  迭代工具  迭代环境
**可迭代对象**分为两大类:一种是实际保存的序列,即列表、元组,字符串,字典;  另一种是虚拟序列,包括range、enumerate、zip、filter函数返回值,还有字典的方法d.keys()、d.values()、d.items()

通过对可迭代对象调用  iter()函数,就会返回一个**迭代器**。另外,对迭代器调用iter方法,则会返回迭代器自身。

Python中有一类工具叫做**迭代工具**,他们能从左至右扫描对象。这包括了for循环、列表解析、in成员关系测试以及map内置函数等。

Python中,从左到右扫描的每种工具都使用了迭代协议,都可以称之为**迭代环境**。  for循环表达式、列表解析式、in成员关系测试,map内置函数,sorted和zip等调用;  还包括一些其他的内置方法,如sum,any,all,max,min都可以传入任何可迭代对象, 还包括了list和tuple、set内置函数,他们也是通过迭代协议扫描可迭代对象,构建新的对象。还有字符串join方法,它将一个子字符串放置到一个被包含在可迭代对象的字符串之间

a=(i*2 for i in range(5))
b=[i*2 for i in range(5)]
c={i*2 for i in range(5)}
print(a,'\n',b,'\n',c)
>>><generator object <genexpr> at 0x0000000002756148>
 [0, 2, 4, 6, 8] 
 {0, 2, 4, 6, 8}

完整的看看迭代过程是怎么实现的:当任何可迭代对象传入到for循环或其他迭代工具中进行遍历时,迭代工具都是先通过iter函数获得与可迭代对象对应的迭代器,然后再对迭代器调用next函数,不断的依次获取元素,并在捕捉到StopIteration异常时确定完成迭代,这就是完整的迭代过程。这也称之为**“迭代协议”**。

                                                                                                                 转载自:https://zhuanlan.zhihu.com/p/32508947
                                                                                                                               https://zhuanlan.zhihu.com/p/32509527

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值