0
点赞
收藏
分享

微信扫一扫

python 生成器表达式

沈芏 2022-04-22 阅读 74
python

文章目录

1.用生成器表达式初始化元组

虽然也可以用列表推导来初始化元组、数组或其他序列类型,但是生成器表达式是更好的选择。这是因为生成器表达式背后遵守了迭代器协议,可以逐个地产出元素,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。前面那种方式显然能够节省内存。生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。

from collections import Iterator,Iterable
g = [i**2 for i in range(5)]
print(f"g={g}")
# g=[0, 1, 4, 9, 16]
h = (i**2 for i in range(5))
print(f"h={h}")
# h=<generator object <genexpr> at 0x7fc8d018cf50>
print(isinstance(g,Iterator))
# False
print(isinstance(g,Iterable))
# True
print(isinstance(h,Iterator))
# True
print(isinstance(h,Iterable))
# True

2. 使用生成器表达式计算笛卡儿积

colors=['white','black']
sizes=['M','S','L']
i=0
for tshirt in ('%s %s' % (c,s) for c in colors for s in sizes):
    print(f"i={i},tshirt={tshirt}")
    i+=1

# output:
# i=0,tshirt=white M
# i=1,tshirt=white S
# i=2,tshirt=white L
# i=3,tshirt=black M
# i=4,tshirt=black S
# i=5,tshirt=black L
举报

相关推荐

0 条评论