推导式
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
利:推导式的效率比循环的高
弊:可读性差
Python 支持各种数据结构的推导式:
列表推导式
字典推导式
集合推导式
元组推导式
推导式格式为:
[表达式 for 变量 in 列表 if 条件]
{健:值 for 变量 in 字典.items() if 条件}
{表达式 for 变量 in 集合 if 条件}
(表达式 for 变量 in 元组 if 条件)
⽤⼀个表达式创建⼀个有规律的列表或控制⼀个有规律列表。
列表推导式
创建一个空列表,追加1到10这几个数字
for循环实现过程
list1 = []
for i in range(1,11):
list1.append(i)
print(list1)
# 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
列表推导式实现过程
list1 = [i for i in range(1,11)]
print(list1)
# 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
带if的列表推导式
方法一:利用步长实现
# 将1到10的偶数添加到列表
list1 = [i for i in range(1, 11, 2)]
print(list1)
# 输出:[1, 3, 5, 7, 9]
方法二:if实现
# 将1到10的偶数添加到列表
list1 = [i for i in range(1, 11) if i % 2 == 0]
print(list1)
# 输出:[1, 3, 5, 7, 9]
字典推导式
创建⼀个字典:字典key是1-5数字,value是这个数字的2次⽅
dict1 = {i: i**2 for i in range(1, 6)}
print(dict1)
# 输出:dict1 = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
将两个列表变为⼀个字典
list1 = ['name', 'age', 'sex']
list2 = ['Tom', 20, '男']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)
# 输出:{'name': 'Tom', 'age': 20, 'sex': '男'}
提取字典中⽬标数据
computs = {'AUC': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
# 需求:提取上述电脑数量⼤于等于200的字典数据
count1 = {key: value for key, value in computs.items() if value >= 200}
print(count1)
# 输出:{'AUC': 268, 'DELL': 201}
集合推导式
计算数字 1,2,3 的平方数
setnew = {i**2 for i in (1,2,3)}
print(setnew)
# 输出:{1, 4, 9}
输出非abc的字母
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
# 输出:{'d', 'r'}
元组推导式
生成包含1到9数字的元组
a = (x for x in range(1,10))
print(a)
# 返回的是生成器对象
# 输出:<generator object <genexpr> at 0x7faf6ee20a50>
# 使用 tuple() 函数,可以直接将生成器对象转换成元组
print(tuple(a))
# 输出:(1, 2, 3, 4, 5, 6, 7, 8, 9)
print(tuple((x for x in range(1,10))))
# 输出:(1, 2, 3, 4, 5, 6, 7, 8, 9)
全套python资料请前往主页: python全家桶_银色晨曦的博客-CSDN博客