一次生成一个结果的生成器函数

时间:2018-10-02 03:28:53

标签: python

我想知道为什么这个生成函数只得到一个结果

def scramble(seq):
    for i in range(len(seq)):
        seq = seq[1:] + seq[:1]
    yield seq

print(list(scramble('spam')))

返回['spam'],而不是我期望的['spam', 'pams', 'amsp', 'mspa']

1 个答案:

答案 0 :(得分:1)

yield seq行的缩进量不足以使其退出for循环。

def scramble(seq):
    for i in range(len(seq)):
        seq = seq[1:] + seq[:1]
        yield seq

print(list(scramble('spam')))