# Python推导式

[En]

And deriving a similar function is the ternary operator, which is a simplified method for the use of conditional judgment statements.

val for val in Iterable

[En]

There are three ways to express the deductive form, which are wrapped in the corresponding symbols.

[En]

The list is pushed to the formula, and the traversed data will eventually become a list data.

常规写法
lst = []
for i in range(1, 11):
lst.append(i)
print(lst)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

lst = [i for i in range(1, 11)]
print(lst)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


处理容器中的数据：[1, 2, 3, 4, 5] -> [3, 6, 9, 12, 15]
lst = [1, 2, 3, 4, 5]

new_lst = []
for i in lst:
res = i * 3
new_lst.append(res)
print(new_lst)  # [3, 6, 9, 12, 15]

new_lst = [i * 3 for i in lst]
print(new_lst)  # [3, 6, 9, 12, 15]


[En]

Single cycle derivation with judgment condition

过滤出奇数
lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

new_lst = []
for i in lst:
if i % 2 == 1:
new_lst.append(i)
print(new_lst)  # [1, 3, 5, 7, 9]

new_lst = [i for i in lst if i % 2 == 1]
print(new_lst)  # [1, 3, 5, 7, 9]


两个列表中数据的总和<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>The sum of the data in the two lists</font>*</details>
lst = [1, 2, 3]
lst1 = [11, 22, 33]

new_lst = []
for i in lst:
for j in lst1:
res = i + j
new_lst.append(res)
print(new_lst)  # [12, 23, 34, 13, 24, 35, 14, 25, 36]

new_lst = [i + j for i in lst for j in lst1]
print(new_lst)  # [12, 23, 34, 13, 24, 35, 14, 25, 36]

1、将字典中的数据变成['x=A', 'y=B', 'z=c']的样式
{'x': 'A', 'y': 'B', 'z': 'C' }

2、将所用元素变成纯小写

3、x是0-5之间的偶数,y是0-5之间的奇数 把x,y组成一起变成元组,放到列表当中

4、使用列表推导式 制作所有99乘法表中的运算

5、求M,N中矩阵和元素的乘积
M = [[1,2,3], [4,5,6], [7,8,9]]
N = [[2,2,2], [3,3,3], [4,4,4]]

第五题解法之一

=>实现效果1   [2, 4, 6, 12, 15, 18, 28, 32, 36]
=>实现效果2   [[2, 4, 6], [12, 15, 18], [28, 32, 36]]

lst_new = []
for i in range(len(M)) :
for j in range(len(N)) :
res = M[i][j] * N[i][j]
lst_new.append(res)
print(lst_new)

res = [M[i][j]*N[i][j] for i in range(len(M)) for j in range(len(N))]
print(res)

lst_new = []
for i in range(len(M)) :
lst_new2 = []
for j in range(len(N)) :
res = M[i][j] * N[i][j]
lst_new2.append(res)
lst_new.append(lst_new2)
print(lst_new)

res = [[M[i][j]*N[i][j] for j in range(len(M))] for i in range(len(N))]
print(res)


[En]

The use of set derivation and list derivation is basically the same, but the outer braces are included, and the resulting data is a collection.

'''

满足年龄在18到21，存款大于等于5000，小于等于5500的人
开卡格式为：尊贵VIP卡老X（姓氏），否则开卡格式为：抠脚大汉老X（姓氏）
把开卡的种类统计出来
'''
lst = [
{"name": "刘鑫炜", "age": 18, "money": 10000},
{"name": "刘聪", "age": 19, "money": 5100},
{"name": "刘子豪", "age": 20, "money": 4800},
{"name": "孔祥群", "age": 21, "money": 2000},
{"name": "宋云杰", "age": 18, "money": 20}
]

setvar = set()

for i in lst:
if (18


[En]

The same is true for dictionary deduction, but the dictionary data exists in the form of key-value pairs, so the returned data, or the returned data, is changed to two to correspond to the key value.

[En]

Change the key-value pair in the list into a dictionary

lst = [{'A': 'a'}, {'B': 'b'}]

dct = {k:v for i in lst for k,v in i.items()}

print(dct)  # {'A': 'a', 'B': 'b'}


enumerate(iterable, [start = 0])

iterable：可迭代数据
start：可以选择开始的索引号（默认从0开始索引）

from collections import Iterator
lst = ['东', '南', '西', '北']

it = enumerate(lst)  # 实现功能返回迭代器
print(isinstance(it, Iterator))  # True

new_lst = list(it)
print(new_lst)  # [(0, '东'), (1, '南'), (2, '西'), (3, '北')]

"""

"""


from collections import Iterator
lst = ['东', '南', '西', '北']

enumerate 配合使用字典推导式 变成字典
dct = {k: v for k, v in enumerate(lst)}
print(dct)  # {0: '东', 1: '南', 2: '西', 3: '北'}


zip(iterable, iterable1, ……)

[En]

Parameters are iterable objects one by one.

[En]

In the following example, the elements in the three lists are formed into tuples with one-to-one correspondence, but there are only three elements in the smallest list, so only three pairs of tuples can be formed one-to-one, and the extra elements are discarded.

lst1 = [1, 2, 3, 4, 5]
lst2 = ['a', 'b', 'c', 'd']
lst3 = ['A', 'B', 'C']

it = zip(lst1, lst2, lst3)
lst = list(it)
print(lst)  # [(1, 'a', 'A'), (2, 'b', 'B'), (3, 'c', 'C')]


import time

start_time = time.perf_counter()
lst = []
for i in range(15000000):
lst.append(i)
end_time = time.perf_counter()
print(end_time - start_time)  # 1.7453036000000002

""" 推导式比循环速度更快 """
start_time = time.perf_counter()
new_lst1 = [i for i in range(15000000)]
end_time = time.perf_counter()
print(end_time - start_time)  # 0.7337192000000001


import dis

def loop():
lst = []
for i in range(10):
lst.append(i)
return lst

def der():
lst = [i for i in range(10)]
return lst

dis.dis(loop)
print('-' * 100)
dis.dis(der)


`
4 0 BUILD_LIST 0
2 STORE_FAST 0 (lst)

5 4 SETUP_LOOP 26 (to 32)
10 CALL_FUNCTION 1
12 GET_ITER
>> 14 FOR_ITER 14 (to 30)
16 STORE_FAST 1 (i)

24 CALL_FUNCTION 1
26 POP_TOP
28 JUMP_ABSOLUTE 14
>> 30 POP_BLOCK

7 >> 32 LOAD_FAST 0 (lst)
34 RETURN_VALUE

Original: https://www.cnblogs.com/msr20666/p/16252242.html
Author: 小小垂髫
Title: Python推导式

(0)

### 大家都在看

• #### SpringBoot(三) – Slf4j+logback 日志，异步请求，定时任务

🚀 优质资源分享 🚀 学习路线指引（点击解锁）知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合，从项目搭建到腾讯…

Python 2023年8月14日
097
• #### 人工智能项目实战-使用OMR完成答题卡识别判卷

😊😊😊 欢迎来到本博客😊😊😊本次博客内容将继续讲解关于OpenCV的相关知识🎉 作者简介：⭐️⭐️⭐️ 目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉pyt…

Python 2023年8月2日
0117
• #### 利用Python检验用户输入密码的复杂度

1、创建 python 文件 &#x5BC6;&#x7801;&#x5F3A;&#x5EA6;&#x68C0;&#x6D4B;&am…

Python 2023年11月2日
057
• #### Python制作简易版烟花，没资金买烟花就来做个电子版的吧

前言 听说有人说我很久没更新了，那今天来表演个粒子烟花 跨年倒计时20天？我已经开始整烟花了，虽然不是很好看吧，但是也能将就看看 😥 这个的背景图，音乐，还有文字都是可以自己修改的…

Python 2023年9月18日
0182
• #### Python使用jieba库分词并去除标点符号

相对于英文文本，中文文本挖掘面临的首要问题就是分词，因为中文的词之间没有空格。在Python中可以使用jieba库来进行中文分词。 但是在中文中，标点符号出现的频率也是很高的，在使…

Python 2023年8月2日
0119
• #### python 从一道作业题到制作一个图形界面的“诈金花”游戏

题目很简单：就是自己写一个程序，实现诈金花游戏的发牌、判断输赢。 规则： 一付扑克牌，去掉大小王，每个玩家发3张牌，最后比大小，看谁赢。 牌型： 豹子：一样大的三张牌，如10,10…

Python 2023年7月31日
0168
• #### 全网最牛自动化测试框架系列之pytest(8)-参数化

【文章末尾给大家留下了大量的福利】 前言 什么是参数化，通俗点理解就是，定义一个测试类或测试函数，可以传入不同测试用例对应的参数，从而执行多个测试用例。 例如对登录接口进行测试，假…

Python 2023年9月12日
0100
• #### 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程

大家好，又见面了。 在构建业务系统的时候，经常会涉及到对附件的支持，继而又会引申出对附件 &#x5728;&#x7EBF;&#x9884;&#x89…

Python 2023年10月23日
082
• #### Series对象（生成，访问和使用）

Series对象的生成 使用Pandas.Series pandas.Series( data, index, dtype, copy)data:数据,可以是序列类型，可以是int…

Python 2023年8月21日
0126
• #### Unity零基础到入门 ☀️| 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】！

📢博客主页：https://blog.csdn.net/zhangay1998 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正！ 📢本文由 God Y.原创，首发于 CSDN🙉…

Python 2023年11月8日
095
• #### 2022 IEEE 编程语言榜单发布！Python 又双叒叕霸榜了，学 SQL 工作更吃香！

哈喽兄弟们！ 近年来，Python 宛如一匹黑马，一骑绝尘，横扫 TIOBE、Stack Overflow 等榜单，如今在 IEEE Spectrum 发布的第九届年度顶级编程语言…

Python 2023年5月23日
0113
• #### app发布前要做的几件事

最近把一个小东西做完了，想上架让大家用一下。在上架之前关于app需要做的几件事在此备忘一下。 1、app签名。 我用的是android studio 21.2.1版，签名跟之前的版…

Python 2023年10月8日
099
• #### Biotin-PEG-AC,Biotin-PEG-Acrylate,生物素PEG丙烯酸酯线性杂双功能PEG试剂

啊哦~你想找的内容离你而去了哦 内容不存在，可能为如下原因导致： ① 内容还在审核中 ② 内容以前存在，但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

Python 2023年10月9日
074
• #### windows pip命令不见了_Python中Pygame以及pip的下载与安装

1.pip的下载： ①进入https://pypi.org/project/pip/（或者搜索”pip下载”即可找到官方下载入口） ②找到”下载…

Python 2023年9月23日
0111
• #### 谣言检测（DUCK）《DUCK: Rumour Detection on Social Media by Modelling User and Comment Propagation Networks》

论文信息 论文标题：DUCK: Rumour Detection on Social Media by Modelling User and Comment Propagation…

Python 2023年10月19日
084
• #### 论文阅读：Robust and Privacy-Preserving Collaborative Learning: A Comprehensive Survey

Abstract 1、提供了协作学习的系统概述 2、简要介绍了完整性和隐私攻击 3、详细介绍了现有的完整性和隐私攻击及其防御 Introduction 举例：医学图像分类、移动键盘…

Python 2023年10月24日
083