python推导式

本文介绍了Python中的各种推导式,包括列表推导式、字典推导式、集合推导式和生成器推导式。通过示例展示了如何使用它们来简化代码,如列表的平方运算、矩阵转置、字典的key合并和值交换,以及利用集合的去重功能。同时强调了生成器推导式的特性,即按需生成元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表推导式

写一个列表:
squares = []
for x in range(10):
squares.append(x2)
print(squares)
用推导式优化后:
squares = []
squares = [x
2 for x in range(10)]
或者
squar = map(lambda x:x**2,range(10))
注:
第一个参数function是一个函数,第二个参数是一个列表。列表中的每一个元素调用函数function,结果构成一个新的序列

运用列表推导式主要是 【我们需要查询的数字符串等(或者这个数对应的函数)+for循环遍历列表+条件】

列表推导式可以包含复杂表达式和嵌套函数;
例如:

from math import pi

[str(round(pi,i)) for i in range(1,6)]

['3.1', '3.14', '3.142', '3.1416', '3.14159']
注:round()函数是一个用于四舍五入的函数,(round(pi,i) i就是表示这个数要保留pi的位数,例:
round(80.23456, 2) : 80.23

嵌套列表推导:
matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]

[[row[i] for row in matrix] for i in range(4)][[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
可以输出长度为4的3x4矩阵
range()函数是用来限制长度的,和C语言数组用法相似,range(1,6)代表输出长度为1-5;
list(zip(*matrix))

[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

字典推导式
字典推导式和列表相似,只是将中括号改成大括号
合并key:
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
for k in mcase.keys()
if k.lower() in ['a','b']
}
print mcase_frequency
输出: {'a': 17, 'b': 34}
快速该更换key和value

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency
输出: {10: 'a', 34: 'b'}

集合推导式
与列表相似,将中括号换成大括号。
注:集合中的元素无序且不重复的,自带去重功能,比如:

计算列表中每个值的平方,自带去重功能
lst=[-2,3,-3,5]
set1={i**2 for i in lst}
print(set1)

输出: {9, 4, 25}
就不需要if判断

生成器推导式
(1)生成器推导式的结果是一个生成器对象而不是列表,也不是元组

(2)使用生成器对象的元素时,可以根据需要将其转化为列表或元组。

(3)可以使用__next__()或者内置函数访问生成器对象,但不管使用何种方法访问其元素,当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象

(4)生成器对象创建与列表推导式不同的地方就是,生成器推导式是用圆括号创建

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值