了解 python 嵌套一行 for 循环

Understanding python nested one line for loops

我试图理解一行 for 循环并将其放入嵌套 for 循环的正常命名法中。单行for循环如下:

print ''.join((letter[i - 1]for i in (int(n) for n in key.split())))

我把上面的嵌套for循环按照常规的方式写成如下:

for n in key.split():
    n = int(n)
    for i in n:
        print ''.join(letter[i - 1])

我没有得到想要的结果。请有人解释我的想法哪里出了问题,或者上面的一行 for 循环如何按常规编写。提前致谢。

仔细查看你的一行中的括号:

print ''.join((letter[i - 1]for i in (int(n) for n in key.split())))
                                     ^---------------------------^

嵌套生成器只是一个为外部生成器提供值的序列。可以简化为

print ''.join((letter[int(i) - 1]for i in (n for n in key.split())))

或者只是

print ''.join(letter[int(i) - 1] for i in key.split())

等效循环是

for i in key.split():
    print letter[int(i) - 1],    # Suppress the newline

嵌套循环简化示例。

from enum import IntEnum

class MyEnum(IntEnum):
    FOO_BAR = 0
    JOHN_DOE = 1
    
result = []
for x in MyEnum:
    x_splits = []
    for s in x.name.split('_'):
        x_splits.append( s.capitalize() )    
    result.append ( ' '.join(x_splits) )
    
# >>> result
# ['Foo Bar', 'John Doe']

第一步:

result = []
for x in MyEnum:
    x_splits = [ s.capitalize() for s in x.name.split('_') ]
    result.append ( ' '.join(x_splits) )

第二步:

result = []
for x in MyEnum:
    result.append ( ' '.join( s.capitalize() for s in x.name.split('_') ) )

第三步:

result = [ ' '.join( s.capitalize() for s in x.name.split('_') ) for x in MyEnum ]

结果相同:

# ['Foo Bar', 'John Doe']