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'))
迭代器用来为类序列对象提供一个类序列的接口。迭代器就是生成一个有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'))
相关文章推荐
- 4 Python 迭代器_生成器_列表解析
- Python比较for循环、列表解析、迭代器、map之间运算时间关系
- python--迭代器,生成器,三元表达式,列表解析,生成器表达式
- Python基础02--迭代器、生成器、列表解析
- Python基础(8)_迭代器、生成器、列表解析
- 举例讲解Python中的迭代器、生成器与列表解析用法
- Python 三目运算,列表解析,装饰器,迭代器和生成器
- 举例讲解Python中的迭代器、生成器与列表解析用法
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- Python 生成器函数,生成器表达式,迭代器,列表解析
- Python中map和列表推导效率比较实例分析
- Python中map和列表推导效率比较实例分析
- python之列表解析与生成器
- Python高级特性(切片,迭代,列表生成式,生成器,迭代器)
- python 列表生成式、生成器、迭代器、yield
- Python 列表解析和生成器表达式
- Python里有趣的列表解析和生成器表达式
- python迭代器和生成器,列表