python 列表解析

列表解析:

此为高端用法, 与lambda表达式同为函数式编程

其为根据已有列表,高效创建新列表的方式

列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中

语法:

[expression for iter_val in iterable]

[expression for iter_val in iterable if cond_expr]
  • 第一种语法是标准的遍历语法
  • 第二种后头的if用于过滤

详细用例可参考这里:

https://www.cnblogs.com/liu-shuai/p/6098227.html

由各个用例&语法可以看出, 列表解析是for创建list的一种替代方案, 并且其速度相比于for可以快进一倍, 有点类似于正则表达式对于字符串的作用

例子:

length = 3
vec1 = [a for a in range(length)]
vec2 = [chr(ord("a")+a) for a in range(length)]
ans1= [(a,b) for a in vec1 for b in vec2]
print(ans1)

输出:

[(0, 'a'), (0, 'b'), (0, 'c'), (1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c')]

基本思想就是把原先放在for中的expression丢到前头去

嵌套列表解析:

这里就相当于for的嵌套, 一个道理

例子:

length = 3
vec1 = [[now+row for now in range(length) ] for row in range(0, length*length, length)]
print(vec1)

输出:

[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值