列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。

下面看一个具体的例子:

实例1:求10以内每个数字的平方值,保存到列表中

以往,我们会用for循环来实现:

1 list1 =[]2 for x in range(10):3 list1.append(x**2)

如果用列表推导式,如下:

1 list1 = [x ** 2 for x in range(10)]

只用一行代码,就搞定。

实例3:复杂的循环嵌套

把一个矩阵(以列表为元素的列表)展平为一个列表。首先,我们用for循环来实现一下:

1 matrix =[2 [1, 2, 3],3 [4, 5, 6],4 [7, 8, 9],5 ]6

7 #方法1:用for循环来处理

8 mylist_1 =[]9 for i inmatrix:10 for j ini:11 mylist_1.append(j)12 print(mylist_1) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

接下来,我们用列表推导式实现:

1 mylist_2 = [j for i in matrix for j ini]2 print(mylist_2) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

还是一行代码就搞定,但一行里面有两个for,看起来很乱,两个for,哪个在前哪个在后呢?只要记住他们的顺序和不用推导式的原始for循环是一致的即可。

列表推导式的可读性:

一行代码搞定几行代码的事情,看上去很简洁,但是读起来很费劲,尤其是当条件语句很长的时候,把这一行代码变得很长,超过了代码规范规定的长度(一般是80个字符),也使得理解代码变得困难。

面对一行长长的代码该如何下口读,如何理解呢?别着急,好在Python允许在中括号、花括号之间断行:

列表推导式断行:

断行前:

1 mylist_2 = [j for i in matrix for j in i]

断行后:

1 mylist_2 =[2 j3 for i inmatrix4 for j ini5   ]

字典(dict)和集合(set)的推导式:

前面我们也提到过,推导式不仅仅适用于列表,它同样使用于字典dict和集合set。

把一个字典的key和value互换:

changed = {value: key for key, value in input_dict.items()}

用一个列表的所有单词的首字母生成一个集合:

chars = {w[0] for w in words_list}

通过以上讲解就可以轻松掌握Python的列表推导式(list comprehension)了,简而言之,就是把普通的多行for循环压缩成一行代码,这种压缩语法适用于列表、字典、集合等可迭代数据结构(iterables)。

python3 列表推导式_Python3 之 列表推导式相关推荐

  1. python3列表推导式矩阵转置_python3进阶之推导式1之列表(list)推导式(comprehensions)...

    1.前言 推导式,英文名字叫comprehensions,注意与comprehension(理解)只有s字母之差.推导式又可以叫解析式,推导式可以从一种数据序列构建新的数据序列的结构体.推导式分为,列 ...

  2. # 取字典的值_python3的列表、元组、字典的复习和推导式和生成器小结

    推荐指数:★★★★ ======================================= python3:列表推导式,生成器表达式,字典推导式 ======================= ...

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

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

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

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

  5. 列表输出循环左移_python 列表推导式(经典代码)(21)

    文章首发微信公众号,微信搜索:猿说python 截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率 ...

  6. 列表解析python_基于Python列表解析(列表推导式)

    列表解析--用来动态地创建列表 [expr for iter_var in iterable if cond_expr] 例子一: map(lambda x: x**2, range(6)) [0, ...

  7. Python推导式comprehension:列表推导式、集合推导式、字典推导式

    一.Python中的推导式 推导式comprehension,可以从一个数据序列构建另一个新的数据序列的结构体. 列表推导式 集合推导式 字典推导式 二.列表推导式 作用:用一个表达式创建一个有规律的 ...

  8. python字典推导式_python的各种推导式(列表推导式、字典推导式、集合推导式)...

    推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...

  9. Python(IT峰)笔记06-数据类型详解:列表,列表的定义,列表的基本运算,列表中的切片,列表中的相关函数,浅拷贝,深拷贝,列表推导式

    1.列表的定义 中括号进行定义 list函数定义 使用逗号分割 列表中的元素可以是任意类型,尽管这样很少用 lists=list() lists.append('zhangsan') lists.ap ...

最新文章

  1. 有关UITabbarController的一些重要属性
  2. idea自动导入jar包的快捷键
  3. linux环境下如何查看solr版本,Solr环境搭建(linux)
  4. 2022年PMP考试模拟题1(含答案解析)
  5. DOS常用命令(从入门到精通)
  6. 运输问题(模型建立、表上作业法、产销平衡、产销不平衡)
  7. Unity获取时间戳
  8. 北京航空航天计算机考研科目,2020考研北京航空航天大学计算机考研考试科目...
  9. 每日一记—Android动态申请多个权限
  10. 国家代码查询(Country codes)
  11. 如何用微信公众号快速注册小程序
  12. 解决MacBookPro git push提示You hasn‘t joined this enterprise
  13. AutoJs学习-QQ\微信自定义小尾巴
  14. 东邪西毒新编 (转)
  15. 一个html5表格代码
  16. SEO免费外链发布工具
  17. linux内核态real cred,Linux内核源码分析 -- 更新当前进程的 cred -- commit_creds
  18. 由 Microsoft 或 IP 网关供应商伙伴测试过的 PBX 配置
  19. C#网络应用编程——复习总结
  20. 【Unity小工具】一键制作艺术字,超简洁操作,策划与美术的福音!

热门文章

  1. Latex多行注释快捷键(Texstudio)
  2. away3d 4x骨骼控制器用法详解
  3. pms软件服务器维护,“/PMS”应用程序中的服务器错误请高手帮忙DBNETLIB 爱问知识人...
  4. iOS审核被拒那些坑(五)
  5. 点成分享| 空气卫生的重要性和病毒传播方式
  6. 【sql的mapper.xml文件】完美去除idea中mapper.xml文件中的黄色绿色背景色
  7. VCSA 上的 vmware-vpxd 服务失败,Web端提示503 服务不可用 (503 Service Unavailable)
  8. 用Java写句情话_哄对象最好用的22句情话,句句甜到心里
  9. 视频基础教程之——How To Kiss Someone Passionately
  10. Oracle裁员后会打算将云计算作为主战场吗?