推导式
- 列表推导式
- 生成器推导式
- 字典推导式
- 集合推导式
列表推导式
使用[]生成列表
例一:
lt = [x for x in range(10) if x%2==0]
print(lt) # [0, 2, 4, 6, 8]
例二
lt = [x if x%2==0 else -x for x in range(10)]
print(lt) # [0, -1, 2, -3, 4, -5, 6, -7, 8, -9]
生成器推导式
将俩表推导式的[]改成()即可得到生成器会生成一个迭代器对象
lt = (x if x%2==0 else -x for x in range(10))
print(type(lt)) # <class 'generator'>
for i in lt:
print(i,end=' ') # 0 -1 2 -3 4 -5 6 -7 8 -9
字典推导式
字典推导和列表推导的使用方法是类似的,只把中括号该改成大括号。
例一:
dic={chr(x):x for x in range(97,101)}
print(dic) # {'a': 97, 'b': 98, 'c': 99, 'd': 100}
例二:
dic={chr(x):x if x%2==0 else x*2 for x in range(97,101)}
print(dic) # {'a': 194, 'b': 98, 'c': 198, 'd': 100}
例三:
还可以快速颠倒key与value值
dic = {'a': 97, 'b': 98, 'c': 99, 'd': 100}
dic = {v:k for k,v in dic.items()}
print(dic) # {97: 'a', 98: 'b', 99: 'c', 100: 'd'}
集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
例一:
tup = {x for x in range(10) if x%2==0}
print(tup) # {0, 2, 4, 6, 8}
例二
tup = {x if x%2==0 else -x for x in range(10)}
print(tup) # {0, 2, 4, 6, 8, -9, -7, -5, -3, -1}