Python 语言有一种独特的语法,它可以用最简单的方式生成一个列表、元组或字典,它们叫推导式。
常见的推导式:
- 列表推导式
- 字典推导式
- 集合推导式
列表推导式
列表推导式可以快速生成一个列表,其语法格式为:
>>> [x * x for x in range(6)] # 结果:[0, 1, 4, 9, 16, 25]
# 相当于
l = []
for x in range(6):
l.append(x)
要生成的元素 x*x
在前面,后面跟 for
循环。后面也可以再跟 if
判断:
>>> [x * x for x in range(6) if x % 2 == 0]
[0, 2, 4]
# 相当于
l = []
for x in range(6):
if x % 2 == 0:
l.append(x)
print(l)
两层循环(三层很少),生成全排列:
>>> [x+y for x in 'abc' for y in '123']
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
# 相当于
l = []
for x in 'abc':
for y in '123':
l.append(x+y)
print(l)
循环多个变量:
>>> d = {'name': 'rose', 'gender': 'female'}
[k + ':' + v for k, v in d.items()]
['name:rose', 'gender:female']
# 相当于
l = []
d = {'name': 'rose', 'gender': 'female'}
for k, v in d.items():
l.append(k + ':' + v)
print(l)
字典推导式
语法格式:
{key:value for x in (1, 2, 3)}
# 示例一
>>> d = {k:k.upper() for k in ('rose', 'lila', 'tom')} # {'rose': 'ROSE', 'lila': 'LILA', 'tom': 'TOM'}
>>> type(d) # dict
# 示例二
>>>d = {x: x*2 for x in (1, 2, 3)} # {1: 2, 2: 4, 3: 6}
字典推导式要生成的元素有两个,分别是 key 和 value,中间以冒号隔开。
集合推导式
>>> s = {x for x in '123abc' if x not in '123'} # {'a', 'b', 'c'}
总结
- 推导式可以快速生成一个列表、字典或集合等
- 常见的推导式有列表、字典、集合推导式
- 推导式前面为要生成的元素,后面接 for 循环,最后还可以跟 if 判断条件
- 列表([])、集合、字典({})