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}