注:每周一到周五都会进行相关Python基础知识更新,欢迎大家提宝贵的意见

一、用列表推导式取代map和filter

python 提供一种精炼的写法,可以根据一份列表来制作另外一份列表。这种表达式称为list comprehension(列表推导式)。

eg:

>>> a = [1,2,3,4,5,6]
>>> squares = [x**2 for x in a]
>>> squares
[1, 4, 9, 16, 25, 36]

除非是调用只有一个参数的函数,否则,对于简单的情况来说,列表推导式要比内置的map函数更清晰。如果使用map那么就要创建lambda函数,以便计算新列表中各个元素的值,这会是代码看起来有些乱。

使用lambda表达式形式为:

>>> squares = map(lambda x:x**2, a)
>>> squares
[1, 4, 9, 16, 25, 36]

列表推导式则不像map那么复杂,他可以直接过滤原列表中的元素,是的生成的新列表不会包含对应的计算结果。

eg:

>>> squares_2 = [x**2 for x in a if x % 2 == 0]
>>> squares_2
[4, 16, 36]

把内置的filter函数和map结合起来,也能达到同样的效果,但是代码写起来比较难懂。

eg:

latt = map(lambda x: x**2, filter(lambda x:  x%2==0, a))

assert even_squares == list(latt)

总结:

1、列表推导要比内置的map和filter函数清晰,因为它唔需要额外的编写lambda表达式

2、列表推导可以跳过输入列表中的某些元素,如果改用map来做,那就必须辅以filter方能实现

3、字典和集也支持推导表达式

Python语言学习讲解十:列表推导式相关推荐

  1. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  2. python if else用法_python列表推导式中使用if-else

    今天在处理自动化邮件数据时碰到数据行中包含字符串后,从hive中拿到的整数型数据自动转化成了浮点数,严重影响美观性.因此想到了用列表推导式来做转化,将其中的数字型数据全部转化为整型,而字符型数据保留原 ...

  3. 六、Python之三元表达式、列表推导式、生成器表达式

    1.三元表达式 #example1 x = 10 y = 20 res = x if x > y else y print(res) #example2 name = 'abc' res = ' ...

  4. 【python日用】for表达式[列表推导式]

    for表达式语法格式 [表达式 for 循环计数器 in 可迭代对象] 可以看出与普通for循环的区别有两点: 在for关键字之前定义一个表达式,该表达式通常会包含循环计数器 for表达式没有循环体, ...

  5. python列表解析式如何使用_python列表推导式操作解析

    python列表推导式操作解析 这篇文章主要介绍了python列表推导式操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本格式 ​[表达式 ...

  6. 2.1.3 列表推导式

    列表推导式可以说是Python程序开发是应用最多的技术之一,列表推导式可以使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性.另外,Python的内部实现对列表推导式做了大量优化, ...

  7. Python教程:列表推导式和嵌套的列表推导式讲解

    1.列表推导式 列表推导式提供了一个更简单的创建列表的方法.常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列. 例如,假设我 ...

  8. Python 学习之列表推导式

    目录 1.列表推导式-最简形式(list comprehensions): 2.列表推导式-过滤条件形式: (1)只有if形式: (2)if-else形式: (3)列表推导式-循环嵌套形式: 1.列表 ...

  9. python列表的实现原理_python列表推导式原理和使用方法

    偶尔会在python中看见这样一行代码: data = [x**2 for x in range(0, 5)] # 此时data = [0, 1, 4, 9, 16] 如果不知道背后的语法规则,那么很 ...

最新文章

  1. 混合云关键技术能力和发展趋势
  2. 随便写写的正则表达式
  3. [博客园公告]编辑器改进(二)
  4. 宝塔面板怎么下载php,宝塔面板下怎么安装Mosquitto-php扩展
  5. 新同事,git又报错Please move or remove them before you merge
  6. 关联查询数据重复怎么办_在设计数据表的时候,是一个宽表好,还是多个维度表好?...
  7. 你没有见过的 7 种 for 循环优化,超好用!
  8. swift面向对象之属性
  9. 开启你的开源项目生涯_了解如何在5分钟内以开源方式开始您的职业生涯
  10. Mysql 根类别和子类别,如何在MySQL中设计类别和子类别?
  11. 当toB产品经理遇到数据分析
  12. JAVA工作流的优雅实现方式
  13. 舍得网开发者碰到的问题及解决(转)
  14. 八皇后问题(递归回溯算法详解+C代码)
  15. cv2.VideoWriter生成视频无法播放的原因(持续补充)
  16. 云数据库polarDB搭建流程!超详细图文教程。秒杀mysql!
  17. java关于文件上传和下载,保存到后台并修改名字。
  18. 在网页中在线查看文档(doc、docx 、xls 、xlsx、 pdf 、swf )
  19. Kettle本机编译
  20. OPENCV例子\samples\cpp\tutorial_code\ImgProc\changing_contrast_brigh的代码分析

热门文章

  1. 抑菌洗手液做MSDS中英文报告详细说明
  2. 直到黎明 Until Dawn 后感
  3. python读取mac地址_python - 获取MAC地址
  4. 黄健翔昨天在意大利对澳大利亚的比赛上的解说激情四射
  5. nant_强制NAnt使用.NET Framework的特定版本进行构建和运行
  6. 科普了解高级编程语言的发展历程
  7. C++通过HTTP请求Get或Post方式请求Json数据
  8. 吵架公约,我不在担心婚后。
  9. for循环不执行的小坑
  10. app.json: 未找到 [“pages“][2] 对应的 pages/goods_list/index.wxml 文件的问题解决办法