week03_python生成器
2018-08-22 22:38
537 查看
生成器表达式Generator expression
语法:
(返回值 for 元素 in 可迭代对象 if 条件)
列表解析式的中括号换成小括号就行了
返回一个生成器
和列表解析式的区别:
生成器表达式是按需计算(或称惰性求值、延迟计算),需要的时候才计算值
列表解析式是立即返回值
生成器:
可迭代对象
迭代器
举例说明:
计算方式:
生成器表达式延迟计算,列表解析式立即计算;
内存占用:
单从返回值本身来说,生成器表达式省内存,列表解析式返回新的列表;
生成器没有数据,内存占用极少,但是使用的时候,虽然一个个返回数据,但是合起来占用的内存也差不多;
列表解析式构造新的列表需要占用内存;
计算速度:
单看计算时间看,生成器表达式耗时非常短,列表解析式耗时长;
但是生成器本身并没有返回任何值,只是返回了一个生成器对象;
列表解析式构造并返回了一个新的列表;
集合解析式:
语法:
{返回值 for 元素 in 可迭代对象 if 条件}
列表解析式的中括号换成花括号{}就行了
立即返回一个集合
用法:
语法:
{返回值 for 元素 in 可迭代对象 if 条件}
列表解析式的中括号换成花括号{}就行了
使用key:value形式
立即返回一个字典
用法:
语法:
(返回值 for 元素 in 可迭代对象 if 条件)
列表解析式的中括号换成小括号就行了
返回一个生成器
和列表解析式的区别:
生成器表达式是按需计算(或称惰性求值、延迟计算),需要的时候才计算值
列表解析式是立即返回值
生成器:
可迭代对象
迭代器
举例说明:
g = ("{:04}".format(i) for i in range(1, 11)) print(type(g))# <class 'generator'> print(next(g)) for x in g: print(x) print("#"*50) for x in g: print(x) 总结: 可以延迟计算;返回迭代器,可以迭代;从前到后走完一遍后,不能回头;练习题:
it = ("{}".format(i+1) for i in range(2)) first = next(it) second = next(it) print(first) print(second) val = int(first) + int(second) #想一下这里不用int()函数会怎么样? print(val)和列表解析式的对比:
计算方式:
生成器表达式延迟计算,列表解析式立即计算;
内存占用:
单从返回值本身来说,生成器表达式省内存,列表解析式返回新的列表;
生成器没有数据,内存占用极少,但是使用的时候,虽然一个个返回数据,但是合起来占用的内存也差不多;
列表解析式构造新的列表需要占用内存;
计算速度:
单看计算时间看,生成器表达式耗时非常短,列表解析式耗时长;
但是生成器本身并没有返回任何值,只是返回了一个生成器对象;
列表解析式构造并返回了一个新的列表;
集合解析式:
语法:
{返回值 for 元素 in 可迭代对象 if 条件}
列表解析式的中括号换成花括号{}就行了
立即返回一个集合
用法:
{(x, x + 1) for x in range(10)}字典解析式:
语法:
{返回值 for 元素 in 可迭代对象 if 条件}
列表解析式的中括号换成花括号{}就行了
使用key:value形式
立即返回一个字典
用法:
print({x: (x, x+1) for x in range(10)}) print({x: [x, x+1] for x in range(10)}) print({(x): [x, x+1] for x in range(10)}) # print({[x]: [x, x+1] for x in range(10)})#####??????????? print({chr(0x41+x): x**2 for x in range(10)}) print({str(x): y for x in range(3) for y in range(4)})
print({str(x): y for x in range(3) for y in range(4)}) #会输出多少个元素???
相关文章推荐
- Python使用生成器实现生产者消费者模式
- Python开发基础-Day9-生成器、三元表达式、列表生成式、生成器表达式
- 翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器
- 举例讲解Python中的迭代器、生成器与列表解析用法
- Python 生成器
- python生成器
- 零基础学python-19.5 重访迭代器:生成器yield
- python 学习笔记(6)闭合与生成器
- 零基础入门学习Python(26):生成器
- python全栈开发-Day11 迭代器、生成器、面向过程编程
- python-迭代器和生成器
- python3----生成器generator(yield)
- 用python的生成器产生杨辉三角
- 零基础学python-19.9 生成器函数与生成器表达式
- python中的迭代器与生成器
- python的迭代器与生成器实例详解
- python生成器的表达式形式
- python【5】-生成式,生成器
- [Python]生成器(generator)
- python 生成器与协程