在python中,推导式有列表推导式,字典推导式,集合推导式
它们有共同的基本格式:
# 以列表推导式为例的推导式详细格式,同样适用于其他推导式。
# [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件表达式]
variable = [out_exp_res for out_exp in input_list if out_exp == 2]
# out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
# for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。
# if out_exp == 2: 根据条件过滤哪些值可以。
例一:30以内所有能被3整除的数
num = [i for i in range(1, 31) if i % 3 == 0]
例二:30以内所有能被3整除的数的平方
num = [i**2 for i in range(1, 31) if i % 3 == 0]
例三:找到嵌套列表中名字含有两个‘e’的所有名字
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
result = [n for name in names for n in name if n.count('e') > 1]
本质就是把列表推导式的[]
换成()
就成了生成器推导式
栗子:
sum([i for i in range(100000000)]) # 列表推导式
sum(i for i in range(100000000)) # 生成器表达式
例一:将一个字典的key和value对调
dic = {'a': 1, 'b': 2}
result = {dic[d]: d for d in dic}
例二:合并大小写对应的value值,将k统一成小写
dic = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
result = {d.lower(): dic.get(d.lower(), 0) + dic.get(d.upper(), 0) for d in dic.keys()}
例一:计算列表中每个值的平方,自带去重功能
li = [1, -1, 2]
result = {i**2 for i in li}
基于Nginx+Supervisord+uWSGI+Django1.11.1+Python3.6.5构建