Python 推导式

 

前言

 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

列表(list)推导式

语法

  out_express:  列表生成元素表达式,可以是有返回值的函数。
  for out_exp in input_list:  迭代input_list将out_exp传入out_express表达式中。
  condition:  条件表达式。
variable = [out_express for out_exp in input_list condition]
实例一:判断0-30列表元素被3整除

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

字典(dict)推导式

语法

'''
语法一:
    key:字典中的key
    value:字典中的value
    dict.items():序列
    condition:条件表达式
    key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 
    value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
'''

{key_exp:value_exp for key,value in dict.items() if condition}

'''
语法二:
    key:字典中的key 
    value:字典中的value 
    dict.items():序列 
    condition:条件表达式 
    key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 
    value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
    value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理
    
'''

{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}

实例一:获取字典中key值是小写字母的键值对

dict1 = {"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"}
dict2 = {key:value for key,value in dict1.items() if key.islower()}
print(dict2)
# Output: {'a': 10, 'e': 'python教程'}

实例二:大小key合并

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
  k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
  for k in mcase.keys()
  if k.lower() in ['a','b']
}
print mcase_frequency
# Output: {'a': 17, 'b': 34}

集合(set)推导式

语法
  out_express:  列表生成元素表达式,可以是有返回值的函数。
  for out_exp in input:  迭代input将out_exp传入out_express表达式中。
out_exp:  迭代变量。
input: 可迭代对象,可以是列表,原则、字典、集合以及range区间。 condition:  条件表达式。 variable
= {out_express for out_exp in input_list condition}

实例一:

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: set([1, 4])

 




posted @ 2020-12-08 16:53  -零  阅读(186)  评论(0编辑  收藏  举报