转载至

列表解析

定义和说明

>Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 list。
>列表解析,又叫列表推导式( list comprehension)
>列表解析比 for 更精简,运行更快,特别是对于较大的数据集合
>列表解析可以替代绝大多数需要用到 map和 filter的场合

列表推导式提供了一个创建链表的简单途径,无需使用 map() , filter() 以及 lambda 。以定义方式得到列表通常要比使用构造函数创建这些列表更清晰。每一个列表推导式包括在一个 for 语句之后的表达式,零或多个 for 或 if 语句。返回值是由 for 或 if 子句之后的表达式得到的元素组成的列表。如果想要得到一个元组,必须要加上括号。

基本列表解析

基本

>>> [x for x in range(5)]   # [0, 1, 2, 3, 4]
l1 = [1,2,3,4]
[ x*2 for x in l1]   #[2,4,6,8]

多个值的

[ '%s = %s' for (k, v) in a_map.items()]

两次循环

>>> l1 = [1,2,3,4]
>>> l2 = [1,2,3,4]
>>> [x+y for x in l1 for y in l2]
[2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]

可以调用函数

[ func(x) for x in l1]  #等价于map

注意,列表解析不会改变原有列表的值,会创建新的list

条件列表解析

[ x for x in range(100) if x%2 ==0 ]

嵌套列表解析

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

交换行列

[ [row[i] for row in mat] for i in (0,1,2)] #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

其他:

1.根据索引取元素时,需要进行边界检查 IndexError 切片取,不需要,超过边界不会异常

2.在迭代中修改列表 注意,不安全,不建议这么干但是可以 for i in l1[:]: l1.insert()......

3.多个list合成一个就是

['a','b',.....],['a','b'.....]['a','b'.....]

变为 ['a','b',.....,'a','b'.....'a','b'.....]

>>> sum ([[ 'a', 'b' ],['a' , 'b'],[ 'a' ,'b' ]], [])
['a' , 'b' , 'a', 'b' , 'a' , 'b']
>>> list (itertools .chain([ 'a' ,'b' ],[ 'a', 'b' ],['a' , 'b']))
['a' , 'b' , 'a', 'b' , 'a' , 'b']

python列表解析([ x for x in list])相关推荐

  1. python列表解析的新方法

    python 列表解析我感觉是python非常灵活的一个地方,一开始接触它的时候,特别是之前学过其它的语言, 你会感觉很不习惯,怎么看怎么不对劲,老是觉的哪个地方怪怪的,这就是列表解析的魔力所在. p ...

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

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

  3. python 列表操作详解,Python列表解析操作实例总结

    本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...

  4. python列表解析

    列表解析来自函数式编程语言(haskell),语法如下: [expr for iter_var in iterable] [expr for iter_var in iterable if cond_ ...

  5. 不会但一定要了解的方面,python列表解析方式

    Python支持各种解析(comprehension)操作,比如列表解析.集合解析.元组解析.字典解析.它们根据某些元素来创建(推导)出一个新的列表.集合.元组.字典等.所以有的地方也称为推导,比如列 ...

  6. python天天向上代码解析-python列表解析和生成器表达式

    列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iter ...

  7. Python 列表解析 大文件

    如果在一个4G的大文件test.log中提取里面有error的log: 大家第一想法就是通过打开文件然后每一行的查找,耗时19s import timestart_time = time.time() ...

  8. python列表解析,生成表达式(一分钟读懂)

    如果想通过操作和处理一个序列来创建一个新的列表时,可以使用列表解析和生成表达式 区分就是 [ ] ( ) 1.列表解析 list comprehensions 2.生成表达式 a = [ i for ...

  9. python 列表解析

    2019独角兽企业重金招聘Python工程师标准>>> 1.生成行索引 2.过滤特殊行 1.生存行号 n [6]: [[i, k] for i, k in enumerate(ope ...

最新文章

  1. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署
  2. 2021年机器学习的下一步是什么?
  3. Learning Perl(Perl语言入门)学习笔记(3)
  4. 如何在Git中更改多次提交的作者和提交者名称以及电子邮件?
  5. 验证码 禁止输入中文
  6. 《系统集成项目管理工程师》必背100个知识点-39接驳缓冲和项目缓冲
  7. Java构建子类对象时的顺序
  8. Java GregorianCalendar computeFields()方法与示例
  9. Python 迭代器,错误、异常处理
  10. 视图编辑php,PhpStorm视图模式
  11. linux 驱动读写文件,Linux下读写寄存器
  12. 固态硬盘linux提升,分析如何提升Linux的固态硬盘使用率?
  13. SoundPool循环播放
  14. 计算机usb接口标志什么意思,笔记本上USB接口的标识
  15. 基于STC89C52RC的小车黑线钝角、锐角、迷宫、虚线循迹模块化代码
  16. 两团队在《自然》上发布重要抗癌研究成果,消化系统肿瘤或有望治愈...
  17. c语言重复测试,C语言检测过零的方法--等待过零检测法
  18. av_read_frame
  19. JS 在线引入jQuery
  20. Java中的位移操作 、

热门文章

  1. bash 生成N位随机字符串
  2. python写的多线程 代理服务器 抓取,保存,验证程序【转】
  3. win10第一次安装数据库失败解决方案
  4. IDC:2021年第三季度中国IT安全硬件市场厂商整体收入约为9.8亿美元
  5. JavaScript动态钟表
  6. flac是什么格式?flac怎么转换成mp3格式?
  7. Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能
  8. PBI Report Server 报表页面自动刷新 2步走
  9. html期末大作业Bootstrap医疗器械公司响应式网站源码0014
  10. 《深入浅出图神经网络》读书笔记(8. 图分类)