Python 推导式推导序列
推导式是从一个或多个迭代器快速创建序列的方法。它可以将循环和条件判断结合,从而避免冗长的代码。
一、列表推导式
语法:
[表达式 for item in 可迭代对象]
[表达式 for item in 可迭代对象 if 条件判断]
示例:
y = [x for x in range(1, 5)]
print(y)
结果:[1, 2, 3, 4]
y = [x * 2 for x in range(1, 5)]
print(y)
结果:[2, 4, 6, 8]
y = [x for x in range(1, 50) if x % 5 == 0]
print(y)
结果:[5, 10, 15, 20, 25, 30, 35, 40, 45]
y = [(row, col) for row in range(1, 5) for col in range(1, 5)]
print(y)
结果:[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]
y = [(row, col) for row in range(1, 7) if row % 2 != 0 for col in range(1, 7) if col % 2 == 0]
print(y)
结果:[(1, 2), (1, 4), (1, 6), (3, 2), (3, 4), (3, 6), (5, 2), (5, 4), (5, 6)]
二、字典推导式
语法:
{key表达式: value表达式 for item in 可迭代对象}
示例:
统计一串字符串中各字符出现的数量
text = 'you could not see my tears cause I am in the water'
char_count = {c: text.count(c) for c in text}
print(char_count)
结果:{'y': 2, 'o': 3, 'u': 3, ' ': 11, 'c': 2, 'l': 1, 'd': 1, 'n': 2, 't': 4, 's': 3, 'e': 6, 'm': 2, 'a': 4, 'r': 2, 'I': 1, 'i': 1, 'h': 1, 'w': 1}
三、集合推导式
与列表推导式类似。
语法:
{表达式 for item in 可迭代对象}
{表达式 for item in 可迭代对象 if 条件判断}
示例:
y = {x for x in range(1, 50) if x % 5 == 0}
print(y)
结果:{35, 5, 40, 10, 45, 15, 20, 25, 30}
四、生成器推导式(生成元组)
语法:
(表达式 for item in 可迭代对象)
(表达式 for item in 可迭代对象 if 条件判断)
返回一个生成器对象,一个生成器只能用一次。
示例:
y = (x for x in range(1, 50) if x % 5 == 0)
print(y)
结果:<generator object <genexpr> at 0x0000025228C64518>
y = (x for x in range(1, 50) if x % 5 == 0)
for i in y:
print(i, end=' ')
结果:5 10 15 20 25 30 35 40 45
Python 推导式推导序列的更多相关文章
- python推导式创建序列
推导式创建序列 推导式是一个或多个迭代器快速创建序列的一种方式.可以将循环和条件判断结合,简化代码.几个推导式注意符号的使用,比如小括号,方括号,大括号等等. 列表推导式 列表推导式生成列表对象,语法 ...
- python列表式推导
1.基本语法 [表达式 for 变量 in 列表] 或者 : [表达式 for 变量 in 列表 if 条件] 2.示例 生成列表 li=[x for x in range(10)] print(l ...
- python 推导式和迭代器、生成器
1.常用推导式 推导式是从一个或者多个迭代器快速简洁创建数据结构的一种方法. 1.1 _ 列表推导式 最简单的形式: [exprssion for item in iterable] 示例: nu ...
- python基础之 迭代器回顾,生成器,推导式
1.迭代器回顾 可迭代对象:Iterable 可以直接作用于for循环的对象统称为可迭代对象:Iterable.因为可迭代对象里面存在可迭代协议,所以才会被迭代 可迭代对象包括: 列表(list) 元 ...
- python基础 (迭代器回顾,生成器,推导式)
1.迭代器回顾 可迭代对象:Iterable 可以直接作用于for循环的对象统称为可迭代对象:Iterable.因为可迭代对象里面存在可迭代协议,所以才会被迭代 可迭代对象包括: 列表(list) 元 ...
- Python—推导式
推导式 推导式:comprehensions(又称解析式),是Python的一种独有特性,相当于语法糖的存在,推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2 ...
- python 列表推导式 - python基础入门(16)
截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高. 一.什么是推导式 推导式是从一个或者多个 ...
- python note 12 生成器、推导式
1.生成器函数 # 函数中如果有yield 这个函数就是生成器函数. 生成器函数() 获取的是生成器. 这个时候不执行函数# yield: 相当于return 可以返回数据. 但是yield不会彻底中 ...
- python day12 ——1.生成器2.生成器表达式 3.列表推导式
一.生成器 什么是生成器. 生成器实质就是迭代器. 在python中有三种方式来获取生成器: 1. 通过生成器函数. 2. 通过各种推导式来实现生成器 . 3. 通过数据的转换也可以获取生成器. 1. ...
随机推荐
- 如何将UI5应用部署到Fiori On-Premise和On-Cloud的Launchpad上去
On-Premise Launchpad 具体步骤参考我的博客: 如何将BSP应用配置成Fiori Launchpad上的一个tile On-Cloud Launchpad Fiori Cloud L ...
- Codeblocks的常用Debug快捷键
1.在鼠标处开始Debug,F4. 2.逐步调试,F7. 3.进入函数,shift+F7. 4.结束Debug,shift+F8.
- 定位webpack文件大小
之前发现一个神器,记录一下,可以可视化webpack打包的每个js文件大小,这样对我们优化代码是有帮助的,有目标的 https://www.npmjs.com/package/webpack-bund ...
- EF 状态版 增删改
1.利用 状态版 实现 增加 . 2.利用状态版 进行 删除 3. 利用状态版 实现 修改 ,修改 方法 有3种 第1种修改方法 第2种修改 方法 第3种修改方法
- 关于win10深度学习安装配置 CUDA9.0+VS2017+Cudnn7.4.1.5+Anaconda3(cupy安装包)+python3.7+pycharm
0 查看电脑系统版本(非常重要) WIN+R->输入winver, 系统版本号必须高于1703,否则CUDA9.0难以运行!!!! 1 安装 NVIDIA 显卡驱动程序 下载地址:驱动程序 选择 ...
- SQL之Case when 语句
--case简单函数 (把多列变成单列) ' then '女' when ' then '男' else '其他' end from [Northwind].[dbo].[Users] --case搜 ...
- Visual Studio Code快捷键_Linux
Keyboard shortcuts for Linux Basic editing Ctrl + X Cut line(empty selection) Ctrk + C Copy line(e ...
- 在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用
首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- MySQL超大表如何提高count速度
经常用到count统计记录数,表又超级大,这时候sql执行很慢,就是走索引,也是很慢的,怎么办呢? 1.这个时候我们就要想为什么这么慢:根本原因是访问的数据量太大,就算只计算记录数也是很慢的. 2.如 ...
- xml解析之stax
博文引自:http://zangweiren.iteye.com/blog/647334 Java 6.0对XML支持的新特性有许多方面.比如StAX.针对XML-Web服务的Java架构(JAX-W ...