列表字典推导式

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

形式:

[表达式 (条件) for 变量 in 对象 (条件)] 列表推导式,生成列表

(表达式 (条件) for 变量 in 对象 (条件)) 生成器,生成生成器对象

{表达式:表达式 (条件) for 变量 in 对象 (条件)} 字典推导式,生成字典

{表达式 (条件) for 变量 in 对象 (条件)} 集合推导式,生成集合

列表推导式

a = [v**2 if v%2 == 0 else v+1 for v in [2,3,4,-1] if v>0]
print(a)
#out:[4, 4, 16]

生成器

a = (v**2 if v%2 == 0 else v+1 for v in [2,3,4,-1] if v>0)
print(a)
#out:<generator object <genexpr> at 0x0000000005E3DB88>

生成器对象具有惰性求值的特点,只在需要时生成新元素,比列表推导式效率更高,空间占用更少。需要生成器元素时可将其转化为列表、元组,或使用生成器对象的 next()方法,或者内置函数 next(对象) 进行遍历,或者使用for循环进行遍历,只能从前往后遍历其中的元素,且遍历完之后无法再次访问,需要再次使用生成器。

a = (v**2 if v%2 == 0 else v+1 for v in [2,3,4,-1] if v>0)  #next()方法 ,逐个遍历
a.__next__()
#Out: 4
next(a)
#Out: 4
next(a)
#Out: 16
a = (v**2 if v%2 == 0 else v+1 for v in [2,3,4,-1] if v>0)  #for循环遍历
for i in a:
print(i,end=" ")                                             #按行输出
#out:4 4 16

字典推导式

a = {x:1 for x in range(4)}
print(a)
#out:{0: 1, 1: 1, 2: 1, 3: 1}

集合推导式

a = {x for x in range(4)}
print(a)
#out:{0, 1, 2, 3}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值