将单个“ for”循环转换为嵌套的“ for”循环

时间:2019-04-15 23:14:15

标签: python python-3.x

我想知道如何将for循环转换为多行版本!

(str(s) for s in [sum(float(q) for q in e) for e in more_hours])

2 个答案:

答案 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)