5.7 列表推导式、生成器表达式和字典推导式¶
列表推导式¶
列表推导式,或列表生成式,通过一行代码生成列表
# 提取出 1-20 之间的奇数
odd_list = [i for i in range(21) if i % 2 == 1]
print(odd_list)
# 逻辑复杂的情况
def handle_item(item):
return item * item
odd_list = [handle_item(i) for i in range(21) if i % 2 == 1]
print(odd_list)
- 列表生成式性能高于列表操作
- 逻辑过于复杂时,列表生成式可读性降低
生成器表达式¶
列表推导 [] -> ()
my_gen = (i for i in range(21) if i % 2 == 1)
print(type(my_gen)) # <class 'generator'>
for i in my_gen:
print(i)
字典推导式¶
d1 = {'key1': 'value1', 'key2': 'value2'}
d2 = {v: k for (k, v) in d1.items()}
print(d2)
集合推导式¶
set1 = {v for v in d1.values()}
print(set1)