生成器 解析

# -*- coding:utf-8 -*-

# ******* 生成器 最初模版  帮助理解
def test():
    yield 1   # yield 相当于 return
    yield 2   # yield 返回一个生成器内存地址
              # 可以多次yield
g = test()
print(g)
print(next(g))   # 用next取值
print(next(g))


# ******** 三元表达式
a = 'a'
res = '正确' if a == 'a' else '错误'
print(res)


# ********* 列表解析式  帮助理解以下
a = []
for i in range(10):
    a.append(i)
print(a)
# * 在列表中直接for循环返回值
l = [i for i in range(10)]
print(l)
# * 三元表达式在列表循环
l = [i for i in range(10) if i >4]
print(l)


# ********* 生成器
a = (i for i in range(10))   # 小括号返回生成器对象 中括号返回列表
print(a)
print(next(a))      # 使用next取值
print(next(a))
# * 生成器不会占用太多内存,取一个拿一个
# * 列表会直接生成,放到内存中

# * 使用 map 函数生成器
l = [1, 2, 3, 4]
a = map(str, l)   # 返回一个生成器内存地址
print(next(a))
# * 使用 zip 函数
l1 = zip(l)
print(next(l1))   # 可用 next 取值
# * 使用 reduce 函数
from functools import reduce
q = [1, 2, 2, 2]
l2 = reduce(lambda x,y:x+y, q)   # print(sum(q)) 作用相同 但是占用内存太多
print(l2)                        # print(sum(i for in range(100))) 生成器方式,占用内存少



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值