我想知道如何将for循环转换为多行版本!
(str(s) for s in [sum(float(q) for q in e) for e in more_hours])
答案 0 :(得分:1)
用括号括起来,这是一个等效于以下生成器的生成器表达式:
def generator():
for e in more_hours:
yield str(sum(float(q) for q in e))
或内部生成器表达式进一步细分:
def generator():
for e in more_hours:
s = 0
for q in e:
s += float(q)
yield str(s)
答案 1 :(得分:0)
您的示例输出一个生成器对象。如果您只是想生成等效的内容(而不是生成器对象),那么在output1和output2之后将显示相同的输出:
more_hours = [[1.,2.],[3.,4.]]
b = (str(s) for s in [sum(float(q) for q in e) for e in more_hours])
# output 1
for s in b:
print(s)
# output 2
for e in more_hours:
val = 0
for q in e:
val = val + float(q)
print(val)