列表解析与生成器表达式

  • 列表解析(需要改变列表而非新建一个列表)
    [expression for expr in sequence1
    for expr2 in sequence2```
    for exprN in sequenceN
    if condition]
    对于满足条件的sequence,迭代sequence里面的所有内容,每一次迭代都把sequence里面的内容放到前面的expr对象中去,在表达式中应用这样的对象形成一个列表
>>>[x for x in range(10)]
[0,1,2,3,4,5,6,7,8,9]

>>>[x**2 for x in range(10)]
[0,1,4,9,16,25,36,49,64,81]

>>>[x**2 for x in range(10) if x**2 < 50]
[0,1,4,9,16,25,36,49]

>>>[(x+1,y+1) for x in range(2) for y in range(2)]
[(1,1),(1,2),(2,1),(2,2)]
  • 生成器表达式
    (expression for expr in sequence1
    for expr2 in sequence2```
    for exprN in sequenceN
    if condition)
  • 区别点
    生成器表达式返回一个生成器而非创建一个列表,生成器每次计算出一个条目时才把条目“产生(yield)”出来
    十分形象的一种说法是:生成器表达式使用了“惰性计算”或“延时计算”的机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值