您的位置:首页 > 编程语言 > Python开发

python中迭代器、列表解析、生成器的分析比较

2012-08-02 13:29 579 查看
迭代器(iterator)

  迭代器用来为类序列对象提供一个类序列的接口。迭代器就是生成一个有next()方法的对象,而不是通过索引来计数。

  序列、字典、文件中当使用for x in y的结构时,其实质就是迭代器,迭代器是和实际对象绑定在一起的,所以在使用迭代器时或者上述3者时不能修改可变对象的值。这会产生错误。如:在使用for x in y的结构来遍历字典时删除符合条件的字典内容,这会导致报错。

  创建迭代器的方法:iter(object)和iter(func,sentinel)两种。一种使用的是序列,另一种使用类来创建。

列表解析(List comprehensions)

  主要用来动态的创建列表,和map()、filter()和reduce()一样可以用来产生列表。和生成器不同的是,列表解析一次生成一个列表,所占内存较大。

  列表解析的扩展版本语法:[expr for iter_var in iterable if cond_expr]

生成器

  生成器是特定的函数,允许你返回一个值,然后“暂停”代码的执行,稍后恢复。生成器使用了“延迟计算”,所以在内存上面更加有效。

  生成器表达式:(expr for iter_var in iterable if cond_expr)

练习,使用文件读取,找出文件中最长的行的。最精简答案:max(len(x.strip()) for x in open('/etc/motd','r'))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: