生成器表达式

[i for i in range(100)]       #列表解析

 与列表解析的不同是,列表解析用中括号,生成器表达式用小括号

g = (i for i in range(1000))    #生成器表达式     #不用yield的表达形式

print(g)  #这是一个迭代对象
print(next(g))    #next(g) == g.__next__()    #next(g)相当于g.__next__()
print(next(g))    #next(g) == g.__next__()
print(next(g))    #next(g) == g.__next__()
print(next(g))    #next(g) == g.__next__()
print(next(g))    #next(g) == g.__next__()

生成器表达式的应用:

# 列表解析
l = []
with open('goods', encoding='utf-8') as f:
    l = [float(line.split()[1]) * int(line.split()[2]) for line in f]
    print(sum(l))

# 生成器表达式
with open('goods', encoding='utf-8') as f:
    g = (float(line.split()[1]) * int(line.split()[2]) for line in f)
    print(sum(g))

# 换个方式
g = (float(line.split()[1]) * int(line.split()[2]) for line in open('goods', encoding='utf-8'))
print(sum(g))

  

相关文章:

  • 2021-08-21
  • 2021-07-01
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2021-04-01
  • 2021-07-30
猜你喜欢
  • 2022-02-17
  • 2021-06-03
  • 2021-06-14
  • 2022-01-19
  • 2022-12-23
相关资源
相似解决方案