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

本篇主要说一下,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找到更多的参考列表解析的资料

最新文章

  1. bootstrap按钮样式
  2. [变]C#谜题(1-10)表达式篇
  3. [diango]批量导入不重复数据
  4. [SQL]oracle 的to_char、to_number、to_date用法
  5. SharePoint部署
  6. Mybatis 动态sql标签
  7. UVA 246 - 10-20-30 (模拟+STL)
  8. Canvas使用渐变之-线性渐变详解
  9. Xamarin android如何反编译apk文件
  10. solr6.6初探之分词篇
  11. PyQt IDE 环境搭建
  12. JMeter3.0启动日志报错WARN - org.jmeterplugins.repository.Plugin: Unable to load class解决方法
  13. 《Redis 使用规范》
  14. python基础知识15---三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
  15. Python + selenium + pycharm 环境部署细节 和selenium、Jenkins简单介绍
  16. axios简单理解
  17. C# 汉字排序
  18. 本机Tomcat启动myeclipse,用Jmeter录制脚本端口冲突解决办法
  19. 20155301 2016-2017-2 《Java程序设计》第9周学习总结
  20. Vue组件库

热门文章

  1. oracle精简客户端安装配置及常见问题
  2. word的标题行前面数字变成黑框 解决方案
  3. 使用c#操作txt
  4. 什么是Node.js?带你初识Node
  5. css基础-语法篇
  6. 【python】python的正则表达式 re
  7. ASP.NET Core 认证与授权[7]:动态授权
  8. MSSQL-并发控制-2-Isolation
  9. SurfaceView 使用demo 飞机游戏小样
  10. python学习笔记 list