推导式
使用一个表达式来生成指定的数据容器。
01 列表推导式
01 列表推导式
需求:创建一个0-9的列表,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for
# 1. 创建一个空列表
lst1 = list()
# 2. 将0-9的数据对象遍历
for i in range(10):
# 3. 将遍历的迭代数据添加到空列表中
lst1.append(i)print(lst1) # 需求的列表
- 列表推导式
- 语法
- []
- 变量 for 变量逻辑
- 语法
lst = [i for i in range(10)]
print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
02 使用if的列表推导式
需求:生成一个列表,列表元素为0-9之间的奇数
lst = [i for i in range(10) if i % 2]
print(lst) # [1, 3, 5, 7, 9]
03 使用循环嵌套的列表推导式
需求:生成[(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)]
lst = [(i, j) for i in range(2) for j in range(1, 4)]
print(lst) # [(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)]
02 字典推导式
01 简单案例
需求:生成一个字典,字典的key
为1-3的整数,value
是key
的平方。
for
d1 = dict()
for i in range(1, 4):
d1[i] = i**2print(d1) # {1: 1, 2: 4, 3: 9}
- 字典推导式
d1 = {i: i**2 for i in range(1, 4)}
print(d1) # {1: 1, 2: 4, 3: 9}
02 将两个列表生成一个字典
for
lst1 = [11, 12, 13]
lst2 = [21, 22, 23]
d = dict()
for i in range(len(lst2)):
d[lst1[i]] = lst2[i]
print(d) # {11: 21, 12: 22, 13: 23}
- 字典推导式
lst1 = [11, 12, 13]
lst2 = [21, 22, 23]
d = {lst1[i]: lst2[i] for i in range(len(lst2))}
print(d) # {11: 21, 12: 22, 13: 23}
- 补充另一种方式
lst1 = [11, 12, 13]
lst2 = [21, 22, 23]
z = zip(lst1, lst2)
pirnt(dict(z)) # {11: 21, 12: 22, 13: 23}
03 过滤字典的指定value
需求:创建一个手机价格的字典,将价格大于10000元的手机筛选出来,结果为一个字典
d = dict( iphone=19999, huawei=20000, xiaomi=6000, yijia=5000, oppo=500)
d1 = {k: v for k,v in d.items() if v>10000}
print(d1) # {'iphone': 19999, 'huawei': 20000}
03 集合推导式
- 创建一个0-9的集合
s = {i for i in range(10)}
print(s) # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- 将列表中的元素添加到集合中,并取元素的平方
lst = [1, 2, 3, 2, 1]
s = {i**2 for i in lst}
print(s) # {1, 4, 9}