首页 > 解决方案 > 使用什么来代替不中断循环的 return ?- Python

问题描述

我在 Python 中有以下函数,它应该遍历所有文本并返回从索引 0 到 5、从 1 到 6、从 2 到 7 等到文本结尾的单词。我的函数适用于print()语句,但是当我使用return它而不是它时,它只能在[0:5]停止之前起作用。我应该在不中断循环的情况下使用哪个关键字?

f1 = open("doc1.txt", 'r')
f1_words = f1.read().lower().split()

def iterate():
    for i in range(len(f1_words) - 4):
        for j in range(len(f1_words)+1):
            if(j-i==5):
                words1 = f1_words[i:j]
                return words1
            else:
                print(i, j)
print(iterate())

标签: python

解决方案


如果你想从函数中“返回”,同时保持它活着,替换returnyield

f1 = open("doc1.txt", 'r')
f1_words = f1.read().lower().split()

def iterate():
    for i in range(len(f1_words) - 4):
        for j in range(len(f1_words)+1):
            if(j-i==5):
                words1 = f1_words[i:j]
                yield words1
            else:
                print(i, j)

for words1 in iterate():
    print(words1)

推荐阅读