第8章 条件和循环(2)

8.11 迭代器和iter()函数

8.11.1什么是迭代器

迭代器是一组数据类型,可以利用它们的索引从0开始一直“迭代”到序列的最后一个条目。用“计数”的方法迭代序列是很简单的。Python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象。

8.11.3 如何迭代
根本上讲,迭代器是有一个next()方法的对象。

8.11.6 如何创建迭代器

对一个对象调用iter()就可以得到它的迭代器。

一个实现了_iter_()和next()方法的类可以作为迭代器使用。

8.12 列表解释

map()对所有的列表成员应用一个操作。

filter()基于一个条件表达式过滤列表成员。

lambda允许你快速地创建只有一行的函数对象。

列表解释语法:

[expr for iter_var in iterable if cond_expr]

>>> map(lambda x: x - x % 3, range(100,200,7))
[99, 105, 114, 120, 126, 135, 141, 147, 156, 162, 168, 177, 183, 189, 198]
>>> 

>>> filter(lambda x: x%3 == 0, range(100, 200, 10))
[120, 150, 180]
>>> 

8.13 生成器表达式

列表解释的一个不足就是必要生成所有的数据,用以创建整个列表。这可能对有大量数据的迭代器有负面效应。生成器表达式通过结合列表解释和生成器解决了这个问题。

生成器表达式并不是真正创建数字列表,而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”出来,生成器表达式使用了“延迟计算”,所以它在使用内存上更有效。

生成器表达式:

(expr for iter_var in iterable if cond_expr)


>>> for i in (i for i in (1,2,3) if i < 3):
... print i
...
1
2
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值