列表解析和生成式表达式

列表解析和生成式表达式
试想有这样一个需求:我们已经有了列表listA、listB,现在需要生成列表listC,使得listC是listA中每个元素+1的结果,或者是A和B相加的结果,应该如何做?
本节,我们就学习于此相关的技术——列表解析和生成式表达式。

1.需求
python的设计原则之一是简洁,因此我们常常需要快速创建对象,而不用像C语言那样实现整个细节。C语言中的处理,实际上值针对每一个内存对象的操作;在python中
我们更多的利用函数式编程的思想——尽管python不是一门函数式语言。

2.列表解析原理

》》[x**2 for x in range(6)]
【0,1,4,9,16,25】
上面是列表解析的一个简单例子,抽象出来:
[expr for iter_var in iterable]
进一步可以这样抽象:x属于集合A,对集合A中的每个元素x执行f(x):[f(x) for x in A]
[expr for iter_var in iterable if cond_expr]
进一步:复合函数的抽象
>>>f=open("text.txt","r")
>>>len([word for line in f for word in line.split()])

3.生成器表达式

在列表解析中,新生成的列表全部在内存中,比较占用空间。我们现在需要实现“延迟计算”,所以就用到了生成器表达式。语法和列表解析基本相同
[expr for iter_var in iterable]变成了:
(expr for iter_var in iterable)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值