August Rush

一个还在努力成长的小火汁!

游龙当归海,海不迎我自来也。

We create our own demons.

You can reach me at augustrush0923@gmail.com
python各种推导式
发布:2020年09月15日 | 作者:augustrush | 阅读量: 1794

在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构建

京ICP备20007446号-1 & 豫公网安备 41100202000460号

网站地图 & RSS | Feed