python - 使用什么来代替不中断循环的 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())
解决方案
如果你想从函数中“返回”,同时保持它活着,替换return
为yield
:
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)
推荐阅读
- python - 有人可以解释这个 Google Colab 代码中的不同索引吗?
- sql - 选择查询中带有计数的内部联接
- android - 当视频视图处于全屏状态时,RecyclerView 被重新创建
- chapel - 浮点数的`writeln()`的输出精度
- matplotlib - 为 Jupyter 笔记本全局设置轴标签
- python - 使用子进程调用从 python 调用 fortran 可执行文件
- r - 替换矩阵元素时 foreach 不起作用
- python - 对没有内置或导入函数的数字进行排序以对列表进行排序或计算平均值
- python - 权证的 Pip 安装失败
- netlogo - Netlogo & Levelspace:如何在两个子模型之间传递字符串?