Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例

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

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的委托和事件

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Study_05_Observer设计模式 {// 计数器public class Counter{int x;int y;//声明委托public delegate void CountEventHandler(object sender, CountEventArgs e);public eve…

python函数参数类型及顺序_python函数参数类型及其顺序

根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY、POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、KEYWORD_ONLY、VAR_KEYWORD。如图:POSITIONAL_ONLY:参数值…

JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

原文:JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行。博主用…

Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件

因为需要将结果动画保存为MP4视频文件需要ffmepg软件的的支持。 一:安装ffmpeg软件: ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方…

Chapter 4 : 单行函数

SELECT LOWER(SQL: Structural Query Language)from dual;//dual 是一个虚表(伪表)。UPPER(列名|表达式)SELECT UPPER(sql is used exclusively in rdbmses)from dual;SELECT INITCAP(sql is an ENGLISH LIKE language)from dual;Output: Sql Is An English Like Languageselec…

黑马训练营自学笔记(03)

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 对ViewState的一些认识 因为Http协议是一总无状态记忆的协议,即服务器不会知道上次可客户端请求的内容。WebForm中许多服务端控件的实现依靠的就是Vie…

scrapy知乎爬虫mysql存储项目_Scrapy爬虫框架第八讲【项目实战篇:知乎用户信息抓取】--本文参考静觅博主所写...

思路分析:(1)选定起始人(即选择关注数和粉丝数较多的人--大V)(2)获取该大V的个人信息(3)获取关注列表用户信息(4)获取粉丝列表用户信息(5)重复(2)(3)(4)步实现全知乎用户爬取实战演练:(1)、创建项目:scrapy startproject zhijutest(2)、创建爬…

pyplot输出的绘图界面中文乱码的解决方案

解决办法很简单,明确设置并使用特定的中文字体即可。具体来说,分两步: 第一步:生成指定的字体属性对象。此对象名在下例中为fp。 import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties #注意路…

kali下生成web端后门

很多时候在***测试时选择web***害怕用的别人的马带有后门,这样自己的辛苦就要被别人不劳而获,很多时候我们都想拥有自己的马,那么这个时候你就应该使用kail来生成一个自己独特密码的web***了。Kali Linux自带有好几个web***生成工具&#xff…

童儿的故事(二)

回来的路上, 又看到昨天那个望桔的童儿。 “怎么,你还在胡思乱想?”我问他。 “我想,至少我可以望一望它。”顺势他把苹果搂的更紧。 得不到的时候也许会让一个人懂得珍惜, 即便他不懂得满足。 他喃喃道:“…

sql2008能否打开mysql数据库_SQL Server 2008通过LinkServer访问MySQL数据库

(中国软件网讯)怎样让SQL Server 2008数据库可以访问MySQL数据库的数据呢?其实这一实现的过程并不难,可以通过调用MySQL的ODBC驱动,在SQL Server中添加LinkServer的方式实现。本文我们就介绍了这一访问过程,现在我们就开始介绍&am…

素性测试的Miller-Rabin算法完全解析 (C语言实现、Python实现)

因为文中存在公式&#xff0c;只能用图片方式上传了&#xff01; 以下为C语言源代码&#xff1a; #include <stdio.h> typedef long long unsigned LLU; typedef int BOOL; #define TRUE 1 #define FALSE 0 BOOL isPrime(LLU n) { //这是传统的方法&#xff0c;用于与…

MongoDB源码阅读之ReplSet源码分析

1. ReplSet源码结构 rs_config.h replSet间同步设置的工具类 rs_member.h 心跳检测类和replSet成员状态的定义 rs_sync.h 同步数据类 rs.h 定义了几乎所有replSet相关的类&#xff08;Member:replSet中的节点成员&#xff0c; GhostSync&#xff1a;备份同步类&#xff0c;Rep…

C# 字符串性能

Written By Dr Herbie [2] Translated By Allen Lee Introduction 你在代码中处理字符串的方法可能会对性能产生令人吃惊的影响。程序中需要考虑两个由于使用字符串而产生的问题&#xff1a;临时字符串变量的使用和字符串连接。Background1.String是引用类型&#xff0c;在堆上…

手把手教你部署VSAN见证虚拟设备 (Cormac)

译者注&#xff1a;本文翻译自Cormac的博客&#xff0c;并未严格地逐字逐句的直译&#xff0c;如有谬误&#xff0c;万望见谅。原文见此http://cormachogan.com/2015/09/14/step-by-step-deployment-of-the-vsan-witness-appliance/现在开始在之前的帖子中我曾经介绍过见证虚拟…

mysql在哪儿查看表的代码_查看mysql数据库及表编码格式

转载来源&#xff1a;http://www.cnblogs.com/shootercheng/p/5836657.html一、查看MySQL数据库服务器和数据库MySQL字符集。二、查看MySQL数据表(table)的MySQL字符集。三、查看MySQL数据列(column)的MySQL字符集。1.查看数据库编码格式2.查看数据表的编码格式3.创建数据库时指…

PyCharm编程环境的中英文字体分别设置的好处多----一石三鸟地解决中文字体不一致、英文字体不涵盖中文字符、编程字体实用性兼顾美观性的三个问题

在编程环境&#xff08;例如Python的PyCharm&#xff09;中&#xff0c;我们希望编程环境的字体具有如下特性&#xff1a; &#xff08;1&#xff09;字体覆盖中文和英文字符。 &#xff08;2&#xff09;等宽字体&#xff0c;并且是TrueType字体&#xff0c;方便辨识代码中缩…

WordPress博客系统的安全

随着计算机网络的流行&#xff0c;越来越多的人开始创建自己的博客&#xff0c;论起博客系统&#xff0c;全球用的最多的博客系统就是wordpress&#xff08;以下简称WP&#xff09;。但是如果用过WP的人都应该知道&#xff0c;WP的站点想要做的好看&#xff0c;插件是必不可少的…

C/C++ 程序设计员应聘常见面试试题深入剖析

1.引言 本文的写作目的并不在于提供C/C程序员求职面试指导&#xff0c;而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛&#xff0c;部分试题解答也参考了网友的意见。许多面试题看似简单&#xff0c;却需要深厚的基本功才能给出完美的解答。企业要求面试者写…

mysql为什么行数据库_关系数据表中的行称为什么?

在一个二维表中&#xff0c;水平方向的行称为元组&#xff0c;每一行是一个元组&#xff1b;元组对应表中的一个具体记录。数据元组也称为记录。一个数据表中的每一个记录均有一个惟一的编号(记录号)。一个记录也就是数据表中的一行。元组(tuple)是关系数据库中的基本概念&…