流畅的python笔记2.2 列表推导式和生成器表达式

本文介绍了Python中列表推导式的使用方法,并详细解释了如何利用生成器表达式来节省内存开销。通过实例展示了不同场景下两者的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.列表推导式

#coding=utf-8\
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = [(color, size) for color in colors for size in sizes]
print(tshirts) 
当列表推导式中有多个for时,按如下顺序生成列表:

[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]


2.生成器表达式

生成器表达式和列表推导的语法相似,只不过把方括号换成圆括号。

#coding=utf-8\
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = ((color, size) for color in colors for size in sizes)
print(tshirts)
此时的输出不是一个列表,不是一个元组,而是一个可迭代的生成器对象,所以可以节省内存:

输出:

<generator object <genexpr> at 0x0000014950967360>


当生成器表达式是一个函数调用过程中的唯一参数,那么不需要额外再用括号将它围起来:

#coding=utf-8\
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = tuple((color, size) for color in colors for size in sizes)
print(tshirts) 
结果:

(('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L'))

生成器表达式从来不会开辟一块内存来存储列表或元组,从而可以节省内存开销:

#coding=utf-8\
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
for tshirt in ('%s %s'%(c, s) for c in colors for s in sizes):
    print(tshirt)
输出:

black S
black M
black L
white S
white M
white L








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值