11_Python的列表推导式_Python编程之路

上一节我们结束了有关python的方法相关内容
这一节我们先来学习python的列表推导式
之前跟大家说过range方法的使用,在这里我就不做过多的解释了,如忘记了,请翻阅之前的介绍
列表推导式,是Python内置的一种极其强大的生成list的表达式
如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] 可以用 range(1 , 9):
In [1]: list(range(1, 9))
Out[1]: [1, 2, 3, 4, 5, 6, 7, 8]
非常简单操作,相信大家一定都会
但我们要讲的并不是这个
所谓的列表推导式,就是指的轻量级的循环创建列表:
比如像下面的两个式子
In [2]: a = [i for i in range(1,10)] In [3]: a
Out[3]: [1, 2, 3, 4, 5, 6, 7, 8, 9] In [4]: b = [10 for i in range(1, 10)] In [5]: b
Out[5]: [10, 10, 10, 10, 10, 10, 10, 10, 10]
批量生成了两个列表,第一个是一个有顺序的从1到9的列表,第二个是生成了9个相同的数字10
简单讲一下这个列表推导式是怎么定义的
首先忽略推导式中的第一个字符,也就是 i 和 10 ,看后面的一段语句,很显然,是一个循环语句,之前讲过循环语句的,这里不详细解释了
然后再来观察最前面的字符,也就是列表中的元素,循环过的每一个都被作为列表的元素,如果你前面的字符是一个常数的话,那么就只需要考虑循环的次数,而不需要考虑循环的值
接下来,我们继续来加强这个列表推导式的应用
通过判断语句筛选列表元素
比如下面这段代码
In [6]: list_if = [i for i in range(1, 10) if i%2 == 0] In [7]: list_if
Out[7]: [2, 4, 6, 8]
我们在里面加了判断条件,以获取给定循环范围内的所有的偶数
也就是说你可以在循环语句后面在加判断语句
这个还不能算是入门,接下来我们继续来加强列表推导式的应用
多个for循环
2个for循环
使用两个for循环语句,以获取二维列表
代码如下所示
In [8]: muti_for_list = [(i ,j) for i in range(1, 5) for j in range (6, 10)] In [9]: muti_for_list
Out[9]:
[(1, 6),
(1, 7),
(1, 8),
(1, 9),
(2, 6),
(2, 7),
(2, 8),
(2, 9),
(3, 6),
(3, 7),
(3, 8),
(3, 9),
(4, 6),
(4, 7),
(4, 8),
(4, 9)]
这个列表推导式在一些算法领域会有涉及,我们通过连续写两个for循环语句,然后在开始以一个(i, j)作为获取的对象,在这里要注意以下,他是按照顺序执行的
三个for循环
获取三维数组
In [10]: muti_for_list = [(x, y, z) for x in range(2) for y in range (2) for z in range(2)] In [11]: muti_for_list
Out[11]:
[(0, 0, 0),
(0, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 0, 1),
(1, 1, 0),
(1, 1, 1)]
原理基本和二维数组的生成差不多,所以就不做过多解释了
在多维数组中使用判断语句
虽然我们在前面已经讲了多维数组的创建,但为了加强这个的复杂度,我们继续加一些条件
获取三维数组中每行组中元素都一样的数组 类似于下面这样的
[(1, 1, 1),
(2, 2, 2),
(3, 3, 3)]
下面我们通过代码来实现这个功能
In [12]: common_list = [(x, y, z) for x in range(10) for y in range (10) for z in range(10) if x == y and y == z] In [13]: common_list
Out[13]:
[(0, 0, 0),
(1, 1, 1),
(2, 2, 2),
(3, 3, 3),
(4, 4, 4),
(5, 5, 5),
(6, 6, 6),
(7, 7, 7),
(8, 8, 8),
(9, 9, 9)]
这个并不难实现,无非就是加个判断条件
列表推导式,就讲到这里,他还有很多种其他的用法,希望大家,自己去挖掘,去探索
特克斯博客官网 www.susmote.com
11_Python的列表推导式_Python编程之路的更多相关文章
- 14_Python将列表作为栈和队列_Python编程之路
上一篇文章跟大家介绍了列表的一些方法,这一节我们还是讲列表 只是这一节我们要联系一些数据结构,来讲列表 栈 首先我们要理解一下栈是一种什么数据结构 栈(stack)又名堆栈,它是一种运算受限的线性表. ...
- 01-Python的介绍_Python编程之路
首先用一句业内非常出名的话来介绍Python "人生哭短,我用Python" 这也是Python宣传时经常说的一句话 从这句话中,可以非常清楚Python他到底优点在哪里,为什么要 ...
- 06_Python的数据类型3元组,集合和字典_Python编程之路
上一节跟大家讲了Python的列表,当然不是完整的讲完,后续我们还会提到,这一节我们还是来讲Python的数据类型 首先要讲到的就是元组 元组其实拥有列表的一些特性,可以存储不同类型的值,但在某些方面 ...
- 07_Python的控制判断循环语句1(if判断,for循环...)_Python编程之路
Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句 在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条 ...
- 09_Python定义方法_Python编程之路
有关Python判断与循环的内容我们上几节已经跟大家一起学习了,这一节我们主要针对def 做一个讲解 def 定义一个方法 在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python ...
- 10_Python函数方法加深_Python编程之路
上节课已经简单的跟大家讲了如何定义一个方法,但是并没有深入去讲,这一节我们继续来学习定义方法中需要注意的几点 默认参数 前面我们讲到定义一个方法时是可以传递参数的,除了这个功能,实际上python在定 ...
- 12_Python的(匿名函数)Lambda表达式_Python编程之路
Python作为一门高级语言,与很多编程语言一样都具有匿名函数这一特征 匿名函数,也就Lambda表达式,通俗来讲就是不用命名的方法,直接定义,直接用即可 创建匿名函数需要用到Lambda关键字,下面 ...
- 15_Python模块化编程_Python编程之路
之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交 ...
- 02-Python的下载和安装_Python编程之路
原文发布在特克斯博客www.susmote.com 之前给大家讲了关于python的背景知识,还有Python的优点和缺点,相信通过之前的介绍很多人已经清楚自己到底要不要选择学习Python,如果已经 ...
随机推荐
- MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)
作者:i春秋作家--F0rmat 0×01 前言 今天翻了下CNVD,看到了一个MIPCMS的远程代码执行漏洞,然后就去官网下载了这个版本的源码研究了下.看下整体的结构,用的是thinkPHP的架 ...
- CountDownLatch 源码解析—— countDown()
上一篇文章从源码层面说了一下CountDownLatch 中 await() 的原理.这篇文章说一下countDown() . public void countDown() { //CountDow ...
- Ionic3的HTTP请求方法
Ionic的http请求方法,一种是使用Ionic的Native的Http方法,另一种是使用Angular的Http请求方法. 第一种真的是看着文档都实现不了,很奇怪的错(官网文档:https://i ...
- iOS开发-FFmpeg深入分析
FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂.本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一 ...
- 视频聊天 Demo
ESFramework Demo -- 入门Demo,简单的即时通讯系统(附源码) 是基于ESFramework实现的一个简单的文字聊天demo,现在,我们将在这个demo的基础上,使用OMCS为其增 ...
- jquery基本使用和实例
一.寻找元素 表单选择器 $(":input") //匹配所有 input, textarea, select 和 button 元素 $(":text") / ...
- map的infowindow的show事件(ArcGIS API for JS)
- python脚本,计算起点终点高程
import arcpy >>> import arcpy ... gd="D:/项目/shp/Pipe.gdb/ZK/GDPOINT" ... gx=" ...
- ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
聊一聊C#的Equals()和GetHashCode()方法 博客创建一年多,还是第一次写博文,有什么不对的地方还请多多指教. 关于这次写的内容可以说是老生长谈,百度一搜一大堆.大神可自行绕路. ...
- Spring Security 入门(1-8)Spring Security 的配置文件举例