推导式

推导式

  • 列表推导式
  • 生成器推导式
  • 字典推导式
  • 集合推导式
列表推导式

使用[]生成列表

例一:

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}
原文地址:https://www.cnblogs.com/Gredae/p/11348589.html