列表解析python_python列表解析

列表解析,主要用于动态创建列表

本篇主要说一下,lambda、map()、和filter()同列表解析语句之间结合的用法

列表解析的基本语法为:[expr for iter_var in iterable]

这个语句的核心是for循环,他迭代iterable对象的所有条目。前面的expr应用于序列的每个成员,最后的结果值是表达式产生的列表。

1. 基础使用

来一段示例吧

在idle中进行测试:

>>> [i for i in range(0,8)]

[0,1,2,3,4,5,6,7]

其中 i 即是基本语法中的expr也是iter_val;再换一种方式,我们对里面的值进行一下运算让所有的成员乘以2

>>> [i*2 for i in range(0,8)]

[0, 2, 4, 6, 8, 10, 12, 14]

这就是完全按照基本语法写的一个列表解析

2. 再循环语句后面添加判断条件

扩展版本语法:[expr for iter_val in iterable if cond_expr]

我们还可以进行拓展,在他的后面再添加一些语句,对列表进行筛选;比如我们只要这个数值中可以被2整除的数

>>> [i for i in range(1,8) if i%2 == 0]

[ 2, 4, 6]

这种语句类似于使用filter,所以我们同样可以采用python内置的filter函数实现,以达到获取相同的值

>>> l = filter(lambda x:x%2==0, range(1,8))

>>> for i in l:

i

2

4

6

但是发现没有,有一些不一样,因为我并没有直接打印出列表。为什么呢?因为filter的返回值是一个生成器(generator),生成器是

无法知道所有的值的,只能通过迭代的方式获取下一个值

3. map用于达到跟列表解析相同的结果

>>> map(lambda x: x*2, range(1,8))

[2, 4, 6, 8, 10, 12, 14]

使用它可以获得 [x * 2 for x in range(1,8)]一样的效果,但是使用后者回比map()更高效

4. 生成矩阵

当你需要得到一个3行5列的矩阵的时候,很简单:

>>> [(x,y) for x in range(0,3) for y in range(0,5)]

[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4),

(1, 0), (1, 1), (1, 2), (1, 3), (1, 4),

(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]

大家也可以在PEP 202找到更多的参考列表解析的资料

以上就是python 列表解析的详细内容,更多请关注Gxl网其它相关文章!

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值