Python推导式

发布于:2024-05-08 ⋅ 阅读:(29) ⋅ 点赞:(0)

推导式

使用一个表达式来生成指定的数据容器。

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的整数,valuekey的平方。

  • 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}

网站公告

今日签到

点亮在社区的每一天
去签到