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

2024-09-29 06:26:55 发布

您现在位置: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']


Tags: 函数inforlendefrangespamseq
1条回答
网友
1楼 · 发布于 2024-09-29 06:26:55

yield seq行的缩进不够,无法将其从for循环中取出

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

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

相关问题 更多 >