首页 > 编程语言 >Python列表解析式(又称列表推导式)

Python列表解析式(又称列表推导式)

时间:2024-05-17 17:09:56浏览次数:30  
标签:lv4 lv1 推导 lv2 Python 列表 嵌套 10

概况

  • 嵌套列表解析式又称嵌套列表推导式,功能非常强大,但是初学者难以摸清其书写规则。
  • 以下实例展示了嵌套列表解析的写法。
  1. 嵌套列表解析表达是的书写规则是层层嵌套。
  2. 嵌套层的一般形式为:for outter in inner。根据需要解析的嵌套层次深度,此一般形式可以从左到右接续写若干个。
  3. 嵌套层是从最左边的for开始,从左往右,层次由深层到浅层。
  4. 前提条件:所有从叶结点的到根节点被筛选出来的对象,必须具有可迭代性。
  5. 所谓的叶结点,就是具有最终具体值的非列表性数据的结点。
  6. 所谓的根节点,就是最顶层的具有嵌套子结构的结点。例如下例中的lv2,lv3,lv4,lv4_a

2层嵌套

lv2=[range(10),range(10,20)] #lv2表示嵌套层级为2的列表
print([e for lv1 in lv2 for e in lv1])
#输出结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
print([e for lv1 in lv2 for e in lv1 if e%2==0])
#输出结果为:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

3层嵌套

lv3=[[range(10),range(10,20)],[range(20,30),range(30,40)]] #lv3表示嵌套层级为3的列表
print([e for lv2 in lv3 for lv1 in lv2 for e in lv1 if e%3==0])
#输出结果为:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39]

  

4层嵌套

#lv4表示嵌套层级为4的列表
lv4=[ [ [ [1,2],[3,4,5] ],[[6,7,8,9],[10,11,12,13,14] ] ],[ [ [15,16,17,18,19],[20,21,22,23] ],[ [24,25,26],[27] ] ] ]
print([e for lv3 in lv4 for lv2 in lv3 for lv1 in lv2 for e in lv1 if e%2==1])
#输出结果为:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]

#lv4_a表示最大嵌套层级为4的列表,但是存在嵌套层级为3的叶结点。
#通过在嵌套的列表解析式中引入了条件
#此例的2个输出语句分别实现了如下功能:
# (1)得到了第4层级上叶节点的数值。(不要输出第3层级上的叶结点)。
# (2)得到了第3层级上叶节点的数值。(不要输出第4层级上的叶结点)。
lv4_a =[ [ [11, [1,2],[3,4,5] ],[[6,7,8,9],22,[10,11,12,13,14] ] ],[ [ [15,16,17,18,19],33,[20,21,22,23] ],[ [24,25,26],44,[27] ] ] ]
print([e for lv3 in lv4_a for lv2 in lv3 for lv1 in lv2 if isinstance(lv1,list)==True for e in lv1])
#输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
print([e for lv2 in lv4_a for lv1 in lv2 for e in lv1 if not isinstance(e,list)])
#输出结果为:[11, 22, 33, 44]

  

标签:lv4,lv1,推导,lv2,Python,列表,嵌套,10
From: https://www.cnblogs.com/boye169/p/18198113

相关文章

  • Python知识 | Python的数据结构有哪些?
    Python的数据结构有哪些?Python数据结构概览在Python中,数据结构是编程语言的基础,它们决定了数据如何组织和存储。Python的标准库提供了多种内置数据结构,包括:列表(List)列表是一种可变的序列,可以随时添加、删除或修改其元素。列表以方括号[]表示,元素可以是任何类型的数据。元组(T......
  • python 对于实现rsa加密算法
    importbase64importrsaclassGenerateKey(object):d="ascii"defgenerate_keys(self,bits=1024):(pubkey,privkey)=rsa.newkeys(bits)pem_pubkey=rsa.PublicKey.save_pkcs1(pubkey).decode(self.d)b64_pubkey......
  • Python模拟数据生成库Faker
    Python模拟数据生成库FakerPYPI官网https://pypi.org/project/Faker/Github官网https://github.com/joke2k/faker文档https://faker.readthedocs.io/en/master/中文参考:Python-faker的简单使用https://www.cnblogs.com/TSmagic/p/16072399.htmlpython中第三方库Fake......
  • 【吐槽】今天才发现PyCharm不支持对Python脚本进行块注释
    在PyCharm中对Python脚本Ctrl+Shift+/进行块注释不起作用,然后使用OpenArk64查看是否热键占用冲突,没有发现其他占用。然后发现PyCharm中Code菜单项下的选项CommentwithBlockComment是灰色的。又查了下,最后发现jetbrains官方帮助文档中已说明PyCharm不支持对Python脚本进行......
  • Python通过Geoip解析IP地址信息
    最近在研究ELK日志分析系统,在分析haproxy日志时,考虑需要将haproxy内获取到的IP地址进行解析,网站访问情况。于是有了这么一个需求,奈何maxmind数据库有些不准确,于是衍生出了一个想法,要测试maxmind数据库的准确性。于是乎想到了一个简单的方法,利用python脚本来配置geoip数据库来解......
  • python测试postgres远程登录
    #首先安装psycopg2模块importpsycopg2 #配置数据库连接参数conn_params={"dbname":"your_db","user":"your_user","password":"your_password","host":"your_host","port":&......
  • python爬虫基础
    前言Python非常适合用来开发网页爬虫,理由如下:1、抓取网页本身的接口相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁;相比其他动态脚本语言,如perl,shell,python的urllib包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)此外,抓取网页有时候需要模......
  • Python数据分析与挖掘实战(1-3章)
    非原创,仅个人关于《Python数据分析与挖掘实战》的学习笔记第一章基础略第二章数据分析简介基本概念元组、列表、字典、集合函数式编程:map()函数:定义一个函数,然后用map()逐一应用到map列表中的每个元素。map(lambdax+2:a)reduce()函数:用于递归计算。reduce(lambdax,......
  • 如何使用Python和Plotly绘制3D图形
    本文分享自华为云社区《Plotly绘制3D图形》,作者:柠檬味拥抱。在数据可视化领域,三维图形是一种强大的工具,可以展示数据之间的复杂关系和结构。Python语言拥有丰富的数据可视化库,其中Plotly是一款流行的工具,提供了绘制高质量三维图形的功能。本文将介绍如何使用Python和Plotly来绘......
  • python折线图包括设置横纵坐标字体大小刻度间隔等
    直径上代码#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:dryzhexian.py@time:2024/05/16@desc:"""importpandasaspdimportmatplotlibimportmatplotlib.pyplotaspltimportmatplotlib.tickerasticker......