[Python学习篇] Python推导式

Python 推导式(Comprehensions)是一种简洁的语法,用于生成列表、字典、集合等数据结构。推导式可以让代码更简洁、更易读,并且通常比传统的循环语句更高效。主要有三种推导式:列表推导式、字典推导式和集合推导式。翻译:就是使用更简便的语法创建列表字典集合。

列表推导式

语法:

[表达式 for 元素 in 可迭代对象 if 条件]   # 表达式是要存放在列表中的元素

  • 示例一:创建一个列表,列表中的数据是0-10

方式一:普通创建的方式

list1 = []
for i in range(10):
    list1.append(i)
print(list1)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

方式二:列表推导式的方式

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

list2 = [i for i in range(10) if i % 2 == 0]
print(list2)  # [0, 2, 4, 6, 8]
  • 示例二:创建一个这样的数据 [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

方式一:普通for嵌套的方式

list1 = []
for i in range(1, 3):
    for j in range(3):
        ti = (i, j)
        list1.append(ti)
print(list1)  # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

方式二:多for列表推导式

list1 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list1)  # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
  • 示例三:筛选出列表中学生分数高于60分的数据
list1 = [
    {'name': 'John', 'score': 26},
    {'name': 'Tom', 'score': 90},
    {'name': 'Jerry', 'score': 120},
    {'name': 'Spike', 'score': 65},
    {'name': 'Butch', 'score': 88},
    {'name': 'Anna', 'score': 99}
]
list2 = [items for items in list1 if items['score'] >= 60]
print(list2)  # [{'name': 'Tom', 'score': 90}, {'name': 'Jerry', 'score': 120}, {'name': 'Spike', 'score': 65}, {'name': 'Butch', 'score': 88}, {'name': 'Anna', 'score': 99}]

集合推导式

集合推导式的使用和列表推导式一模一样。集合推导式使用{}花括号,列表推导式使用[]中括号。


字典推导式

字典推导式的作用是快速合并列表为字典或提取字典中的目标数据。

语法:

{键: 值 for 元素 in 可迭代对象 if 条件}

示例一:推导式的方式创建一个字典

dict1 = {f'键{key}': f'值{key}' for key in range(3)}
print(dict1)  # {'键0': '值0', '键1': '值1', '键2': '值2'}

示例二:合并两个列表为字典

list1 = ['name', 'age']
list2 = ['Tom', 18]
dict1 = {key: value for key, value in zip(list1, list2)}
print(dict1)  # {'name': 'Tom', 'age': 18}

示例三:提取数值高于指定数值的数据。

dict1 = {'BJ': 37, 'SH': 38, 'GZ': 32, 'SZ': 40, 'XG': 41}
dict2 = {key: value for key, value in dict1.items() if value >= 38}
print(dict2)  # {'SH': 38, 'SZ': 40, 'XG': 41}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7 号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值