Python中一共有三种推导式,做一个简述。
推导式的结构
开始符号 处理结果 迭代对象 过滤条件 结束符号
列表推导式
读取输入的内容并转成整数。
[int(x) for x in sys.stdin.readline().split() if x != '\n']
开始符号:[
结束符号:]
处理结果:int(x)
迭代对象:for x in sys.stdin.readline().split()
过滤条件:if x != '\n'
#实际上这句话可以不要
会生成一个类似[1,2,3,4]
的列表
生成器表达式
这个和列表推导式很类似,只是开始符号和结束符号变成了()
。
生成器的好处是惰性计算,不会一下子占用太多内存。
集合推导式
这个和列表推导式很类似,只是开始符号和结束符号变成了{}
。
{x**2 for x in [1,2,3,4,1,2,3] if x != 1}
==>{16, 9, 4}
字典推导式
符号:{}
处理结果k:v
#eg1
{x:str(x) for x in [1,2,3]}
==>{1: '1', 2: '2', 3: '3'}
#eg2
{k:v**2 for k,v in enumerate([1,2,3])}
==>{0: 1, 1: 4, 2: 9}