防止功能在“ for”循环内的第一次“返回”时不停止

艾丝蒂

我有一个函数来检查列表中的“负”,“正”和“零”值。下面是我的功能:

def posnegzero(nulist):
    for x in nulist:
        if x > 0:
            return "positive"
        elif x < 0:
            return "negative"
        else:
            return "zero"

但是,当我运行此函数时,它将在检查列表中第一个数字的值后停止。例如:

>>> posnegzero([-20, 1, 2, -3, -5, 0, 100, -123])
"negative"

我希望它继续用于整个列表。在上面的函数中,如果我将的每个实例都更改returnprint,则它会执行应做的事情,但是现在我不希望它说None函数何时完成。关于我哪里出了错的任何想法?

Moinuddin的照片

return停止函数的控制流并返回该流。您可以yield在此处使用它将函数转换为生成器的功能例如:

def posnegzero(nulist):
    for x in nulist:
        if x > 0:
            yield "positive"
        elif x < 0:
            yield "negative"
        else:
            yield "zero"

每次next()在返回的对象上调用时,它将产生下一个结果

>>> result = posnegzero([-20, 1, 2, -3, -5, 0, 100, -123])
>>> next(result)
'negative'
>>> next(result)
'positive'
>>> next(result)
'positive'

或者,您可以一次获得所有结果:

>>> result = posnegzero([-20, 1, 2, -3, -5, 0, 100, -123])
>>> list(result)
['negative', 'positive', 'positive', 'negative', 'negative', 'zero', 'positive', 'negative']

您也可以使用for循环对其进行迭代for循环重复调用该next()方法,直到收到StopIteration异常。例如:

for result in posnegzero([-20, 1, 2, -3, -5, 0, 100, -123]):
    print(result)

# which will print
negative
positive
positive
negative
negative
zero
positive
negative

有关的更多信息yield,请参阅:“ yield”关键字的作用是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有选择地防止调试器在第一次机会异常时停止

“OnClick”功能在第一次点击时没有运行,需要第二次点击

第一次链接功能

vim功能只能在第一次正常运行

Firebase调度功能在第一次调度后失败

Javascript 點擊功能在第一次點擊時不起作用

为什么我的循环只能在第一次迭代中正常工作?

该功能旨在每15次单击执行一次,但始终在第一次单击时执行

ASP-jQuery对话框UI功能在第一次回发后失去功能

jQuery函数只能在第一次单击时正常工作

只能在第一次点击时导航到额外的布局

@keyframes动画只能在第一次使用

CSS动画只能在第一次使用

jQuery的下降不能在第一次?

要防止Google Chrome插件在第一次登录时启动网页?

第一次启动时如何防止通知权限?

什么是防止我的验证功能在表单为空时无法运行?

反应状态没有正确更新。增加和减少功能在第一次点击时不起作用,但在后续点击后起作用

如何防止第一次重新提交Formik

Ember第一次完成加载时如何运行功能

第一次使用变量时功能不起作用

第一次活动后退按钮的功能

使功能第一次使用Tkinter单击后只能运行一次吗?

调用使用观察功能在选择框中显示子类别列表的功能仅在第一次时有效

如何防止过渡元素在每次浏览器第一次刷新或打开网页时过渡?

KendoWindow可以在第一次打开时关闭,但不能在第二次打开时关闭

jQuery-防止第一次单击时执行<a>的默认操作,允许第二次单击时执行默认操作

为什么getchar不能在第一次迭代后执行?

使用JPanel显示不同的信息,但只能在第一次显示