# 【Python基础】推导式

[En]

Apply an action to each element in a sequence or iterable object to create a new list with the resulting result

[En]

Or create subsequences with elements that meet specific conditions.

## 1 列表推导式

[表达式 for 变量 in 可迭代对象]

[表达式 for 变量 in 可迭代对象 if 条件]


定义一个空列表

for 变量 in 可迭代对象:
if 条件:
列表名.append(表达式)


1.2.1 从列表中提取首字母小于c的元素，并以全体大写的形式存储在另一个列表中

elements = ['Omega', 'mu', 'alpha', 'beta', 'pi', 'sigma']
temp = [element.upper() for element in elements if element[0] < 'c']
print(temp)

''' 运行结果
['OMEGA', 'ALPHA', 'BETA']
'''


elements = ['Omega', 'mu', 'alpha', 'beta', 'pi', 'sigma']
temp = []
for element in elements:
if element[0] < 'c':
temp.append(element.upper())
print(temp)

''' 运行结果
['OMEGA', 'ALPHA', 'BETA']
'''


1.2.2 计算1-30内可以被3整除的整数

mylist = [i for i in range(1, 31) if i % 3 == 0]
print(mylist)

''' 运行结果
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
'''


mylist = []
for i in range(1, 31):
if i%3 == 0:
mylist.append(i)
print(mylist)

''' 运行结果
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
'''


1.2.3 创建列表[(0,1),(1,2),(2,3),(3,4),(4,5),(5,6)]

res = [(i, i+1) for i in range(0, 6)]
print(res)

''' 运行结果
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
'''


res = []
for i in range(0, 6):
res.append((i, i + 1))
print(res)

''' 运行结果
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
'''


res = list(map(lambda x: (x, x+1), range(0, 6)))
print(res)

''' 运行结果
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
'''


1.2.4 应用列表推导式，去除列表中成绩小于80的字典

dict_list = [{"科目": "高等数学", "成绩": 96},
{"科目": "大学物理", "成绩": 90},
{"科目": "线性代数", "成绩": 91},
{"科目": "大学英语", "成绩": 75},
{"科目": "分析化学", "成绩": 81},
{"科目": "有机化学", "成绩": 76}]
res = [d for d in dict_list if d["成绩"] >= 80]
print(res)

''' 运行结果
[{'科目': '高等数学', '成绩': 96},
{'科目': '大学物理', '成绩': 90},
{'科目': '线性代数', '成绩': 91},
{'科目': '分析化学', '成绩': 81}]
'''


1.3.1 转置矩阵

matrix = [
[1, 2, 3, 4],
[4, 5, 6, 7],
[7, 8, 9, 10]]
matrix_ = [[row[i] for row in matrix] for i in range(4)]
print('转置前的矩阵：')
print(matrix)
print('转置后的矩阵：')
print(matrix_)

''' 运行结果

[[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]

[[1, 4, 7], [2, 5, 8], [3, 6, 9], [4, 7, 10]]
'''


matrix = [
[1, 2, 3, 4],
[4, 5, 6, 7],
[7, 8, 9, 10]]
matrix_ = []
for i in range(4):
matrix_.append([row[i] for row in matrix])
print('转置前的矩阵：')
print(matrix)
print('转置后的矩阵：')
print(matrix_)

''' 运行结果

[[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]

[[1, 4, 7], [2, 5, 8], [3, 6, 9], [4, 7, 10]]
'''


## 2 字典推导式

{键表达式：值表达式 for 变量 in 可迭代对象}

{键表达式：值表达式 for 变量 in 可迭代对象 if 条件}


2.2.1 通过字典推导式，颠倒字典的键名和值

dict_list = {"科目": "高等数学", "成绩": 96}
res = {v:k for k,v in dict_list.items()}
print(res)

''' 运行结果
{'高等数学': '科目', 96: '成绩'}
'''


2.2.2 使用字符串及其长度创建字典

mylist = ['MySQL', 'Python', 'C++', 'Java', 'HTML', 'CSS']
mydict = {k: len(k) for k in mylist}
print(mydict)

''' 运行结果
{'MySQL': 5, 'Python': 6, 'C++': 3, 'Java': 4, 'HTML': 4, 'CSS': 3}
'''


2.2.3 生成一个包含5个随机数的字典

import random
res = {k: random.randint(10, 100) for k in range(1, 7)}
print(res)

''' 运行结果
{1: 39, 2: 60, 3: 40, 4: 44, 5: 42, 6: 96}
'''


2.2.4 将两个长度相同的列表合并成字典

course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
score = [99, 89, 80, 60, 60]
course_score = {k: v for k, v in zip(course, score)}
print(course_score)

''' 运行结果
{'Python': 99, 'MySQL': 89, 'Java': 80, 'Javascript': 60, 'HTML': 60}
'''


## 3 集合推导式

{表达式 for 项目 in 可迭代对象}

{表达式 for 项目 in 可迭代对象 if 条件}


3.2.1 提取是Python的字母并存储

res = {v for v in 'pdyftaahdofgng' if v in 'python'}
print(res)

''' 运行结果
{'o', 'y', 'h', 't', 'p', 'n'}
'''


3.2.2 获取字符串的长度，并去重

course = ['Python', 'MySQL', 'Java', 'Javascript', 'HTML']
res = {len(item) for item in course}
print(res)

''' 运行结果
{10, 4, 5, 6}
'''


3.2.3 计算数字3，4，5的立方数

res = {v**3 for v in range(3, 6)}
print(res)

''' 运行结果
{64, 27, 125}
'''


## 4 元组推导式

(表达式 for 项目 in 可迭代对象)

(表达式 for 项目 in 可迭代对象 if 条件)


4.2.1 计算数字3，4，5的立方数

Original: https://www.cnblogs.com/ohwell2aha/p/16493768.html
Author: 寇可往，我亦可往
Title: 【Python基础】推导式

(0)

### 大家都在看

• #### 【UML分析、建模与设计】我在工作时遇到UML

一、前言 UML分析、建模与设计 来自现实世界中的概念的抽象描述方法（摘取自《UML面向对象分析、建模与设计（第2版）》） 就我对UML分析与建模技术的认知，最早可追溯至2019年…

Python 2023年10月23日
098
• #### python—matplotlib 散点图，气泡图，气泡饼图/功效矩阵可视化对比

python—matplotlib 散点图，气泡图，气泡饼图/功效矩阵可视化对比 刚入行，一直在看大神们的发帖学习，想着自己也写点什么东西，找了好久没找到气泡饼图相关的内容（可能是…

Python 2023年8月31日
092
• #### 【Pytest】conftest.py文件配置讲解

参考文献 pytest conftest.py文件的使用讲解【pytest】（五）conftest.py是什么？ conftest.py文件特点 所有同目录测试文件运行前都会执行c…

Python 2023年9月12日
0138
• #### python 包之 pycrypto 算法加密教程

pycryto能实现大致3种类型的数据加密（单向加密、对称加密 和非对称加密），产生随机数，生成密钥对，数字签名 单向加密：Crypto.Hash，其中中包含MD5、SHA1、SH…

Python 2023年6月10日
0115
• #### 在Boss直聘上投简历时，怎样保证有新消息时能及时收到

最近在Boss直聘上投简历，偶尔会有HR给我发消息，不想在电脑上错过这些消息，但我又不能时时刻刻盯着这个页，怎么办呢？ 这时，我想起来，之前做过的Chrome插件，如果检测到Bos…

Python 2023年10月23日
093
• #### 尚硅谷Promise笔记

文章目录 一、Promise介绍与基本使用 * 1-1.初体验之promise封装ajax请求 1-2.Promise对象状态属性PromiseState的值有三个 1-3.Pro…

Python 2023年10月8日
090
• #### dataObject可以去重吗java_python爬虫scrapy框架之增量式爬虫的示例代码

scrapy框架之增量式爬虫 一 、增量式爬虫 什么时候使用增量式爬虫： 增量式爬虫：需求 当我们浏览一些网站会发现，某些网站定时的会在原有的基础上更新一些新的数据。如一些电影网站…

Python 2023年10月6日
0103
• #### 简单步骤比别人抢红包快一步

🤵‍♂️ 个人主页@老虎也淘气 个人主页✍🏻作者简介：Python学习者🐋 希望大家多多支持我们一起进步！😄如果文章对你有帮助的话，欢迎评论 💬点赞👍🏻 收藏 📂加关注 快过年了，…

Python 2023年11月6日
0110
• #### CSS宝典⑦-CSS处理器 Less/Scss

HTML系列： 人人都懂的HTML基础知识-HTML教程 HTML元素大全(1) HTML元素大全(2)-表单 CSS系列： CSS基础知识筑基 常用CSS样式属性 CSS选择器大…

Python 2023年10月15日
0112
• #### Python 中有 3 个不可思议的返回功能

今天给大家分享 3 个比较冷门的知识 第一个：神奇的字典键 Python学习交流Q群：906715085#### some_dict = {} some_dict[5.5] = &…

Python 2023年5月24日
0130
• #### python打包exe之pyinstaller用法

pyinstaller可以将python写好的脚本打包成exe文件，方便windows用户在没有python环境下运行。这个程序完全跨平台，包括Windows、Linux、Mac …

Python 2023年6月11日
0165
• #### 【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer

目录 官方文档 1 Sprite 精灵 2 Sprite Renderer 精灵渲染器 2.1 Sprite 精灵 2.2 Color 着色 2.3 Filp 翻转 2.4 Dra…

Python 2023年9月29日
084
• #### 爬虫学习基础

一、认识爬虫 爬虫概述： 通过编写程序爬取互联网的优秀资源（图片、音频、视频……），将我们希望能够保存互联网上的一些重要的数据为己所用。 推荐使用Pytho…

Python 2023年6月12日
0137
• #### python找房源_Python租房信息分析！找到最适合自己的房源信息！

file_data.shape 空值处理 file_data = file_data.dropna file_data.shape 删除空值，最好先做判断 空值处理 file_da…

Python 2023年8月22日
0126
• #### c++读取文件操作和写入文件

在C++中与读取文件和写入文件简单操作有关的类分别有ifstream（文件读入）、ofstream（文件写出）、fstream （文件读入和写出）。 名称 作用 ifstream …

Python 2023年6月10日
0142
• #### pandas 处理什么样的数据？

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。 Original: https://blo…

Python 2023年8月7日
0128