python编程中简洁优雅的推导式示例详解
作者:曾亲桂林 发布时间:2021-02-12 01:43:56
标签:python,推导式
Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮助你在某些场合写出较为精简酷炫的代码。但没有它,也不会有太多影响。Python语言有几种不同类型的推导式。
1. 列表推导式
列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句,如下例子所示:
lis = [x * x for x in range(1, 10)]
print(lis)
输出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推导式要这么理解,首先执行for循环,对于每一个x,代入x*x
中进行运算,将结果逐一添加到一个新列表内,循环结束,得到最终列表。它相当于下面的代码:
lis = []
for i in range(1, 10):
lis.append(i*i)
print(lis)
输出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表推导式为我们提供了一种在一行内实现较为复杂逻辑的生成列表的方法。其核心语法是用中括号[]将生成逻辑封装起来。
列表推导式有多重用法:
增加条件语句
lis = [x * x for x in range(1, 11) if x % 2 == 0]
输出
[4, 16, 36, 64, 100]
多重循环
lis = [a + b for a in '123' for b in 'abc']
输出
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
更多用法
dic = {"name": "mumu", "age": "18"}
a = [k+":"+v for k, v in dic.items()]
print(a) # ['name:mumu', 'age:18']
2. 字典推导式
dic = {x: x**2 for x in (2, 4, 6)}
print(dic)
print(type(dic))
注意:x: x**2
的写法,中间的冒号,表示左边的key右边的value。
输出:
{2: 4, 4: 16, 6: 36}
<class 'dict'>
3. 集合推导式
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
print(type(a))
输出:
{'r', 'd'}
<class 'set'>
4. 元组推导式
没有元组推导式
tup = (x for x in range(9))
print(tup)
print(type(tup))
<generator object <genexpr> at 0x0000013DB865AA40>
<class 'generator'>
要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下所示:
tup = tuple(x for x in range(9))
print(tup)
print(type(tup))
输出:
(0, 1, 2, 3, 4, 5, 6, 7, 8)
<class 'tuple'>
来源:https://blog.csdn.net/bigzql/article/details/115650370


猜你喜欢
- 排查原因,发现是80端口被其它程序占用(很常见的事情╮(╯_╰)╭)。解决方法用记事本打开目录x:\xampp\apache\conf下的h
- #!/usr/bin/env python#coding=utf-8import osfrom pyinotify import Watch
- 1 引言这段时间在研究美团爬虫,用的是scrapy-redis分布式爬虫框架,奈何scrapy-redis与scrapy框架不同,默认只发送
- 内容简介随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pt
- SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提
- 层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯.塞蒂(T.
- MySQL—触发器将两个关联的操作步骤写到程序里面,并且要用事务包裹起来,确保两个操作称为一个原子操作,要么全部执行,要
- 本文实例讲述了PHP 对象继承原理与简单用法。分享给大家供大家参考,具体如下:对象继承继承已为大家所熟知的一个程序设计特性,PHP 的对象模
- 这篇文章主要介绍了基于Python实现ComicReaper漫画自动爬取脚本过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
- 概述全链接层 (Fully Connected Layer) 会把一个特质空间线性变换到另一个特质空间, 在整个网络中起到分类器的作用.ke
- 1.操作数据库 1.1创建数据库create + database + 数据库名称当然如果我们不知道数据库是否存在,如果存在就不创
- 格式:Download.asp?FileName=要下载的文件名 代码如下:Dim Stream Dim Co
- 一:mysql官网下载https://dev.mysql.com/downloads/file/?id=494993
- 引言opencv调用yolov3模型进行深度学习目标检测,以实例进行代码详解对于yolo v3已经训练好的模型,opencv提供了加载相关文
- 上一课:ACCESS入门教程:初识Access 2000窗口接口简介 通过上一课的学习,你是否感觉Access的窗口和接口还有点搞不清楚,对
- write2vin 的 PPT原文路宛兮写的简介:本文解释了以下问题: 1.什么是用户体验? 2.谁发明了这个术语?他想表达什么意思? 3.
- 我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点: 1. 不安全:有被SQL注入的风险。 2. 可能会影响性能:每条SQL语
- 本文实例代码主要实现的是python遍历文件目录的操作,有三种方法,具体代码如下。#coding:utf-8 # 方法1:递归遍历目录 im
- 简介:在Windows下的网易邮箱大师客户端中,阅读邮件时,可以使用快捷键Delete删除邮件,然后自动跳到下一封,如果再按一次Delete
- MySQL低调宣布它将不再把MySQL企业版服务器作为一个tar包发布,而这距离这个公司宣布将MySQL分为免费版和付费版的时间还不到一年。