Python 学习 1:列表推导和生成器表达式

用法

生成数组的常见方法/列表推导/生成器表达式

《笛卡儿积》
生成如图所示的RxS的4种花色,3种牌面的数组
笛卡儿积 图示

常见方法

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
for color in colors:
	for size in sizes:
		print((color, size))

列表推导

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = [(color, size) for color in colors for size in sizes] 

生成器表达式

生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts =(color, size) for color in colors for size in sizes))

为什么使用列表推导

  1. 列表推导相较于常规写法可以减少代码行,且可读性更高
  2. 但是不一定非要使用列表推导。通常原则式,只用列表推导来创建新的列表,并且尽量保持简短已读,要是列表推导代码超过了两行,就不便于阅读代码了。
  3. python 2.x 中列表中使用外面的同名变量时会造成变量泄漏,python 3.x 不会
    在这里插入图片描述
    在这里插入图片描述

为什么使用生成器表达式

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

参考文献

《流畅的Python》 © 2015 by Luciano Gama de Sousa Ramalho.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值