Python any() 函数对于负数列表没有按预期运行

标签 python python-3.x any

我正在尝试将 if 语句中的数字列表与 any() 函数进行比较。我在 Spyder 中使用 python 3.6。有问题的代码是:

if any(lst) >= 1:
    do_some_stuff

lst 实际上是由 list(map(my_func, other_lst)) 生成的,但是在诊断我的问题之后,我得到了如下所示的两种行为,其中我的实际 lst 传递给了 any() 函数:

any([1.535, 1.535, 1.535]) >= 1
>>True

这是预期的。

any([-0.676, -0.676, -0.676]) >= 1
>>True

这是预期的。

我进行了更深入的研究,发现我可以在 lst 中放入小于 0 的任何数字,在 if 语句中都会产生 True 。此外,将 1 转换为 float 也没有帮助。看完"truth value testing" , this post ,并花费大量时间尝试学习程序中的行为,我不知所措。请帮忙,我对 python 很陌生。谢谢!

最佳答案

你比较的是错误的东西。您正在将任意结果与 1 进行比较。

如果列表中的任何元素非零,

any(mylist) 将返回 true。 True 大于或等于 1。

所以这个

any(mylist)>=1

相当于只是

any(mylist)

你的意思是

any(x>=1 for x in mylist)

关于Python any() 函数对于负数列表没有按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48956406/

相关文章:

python - 无法在 vscode 中使用 jupyter 笔记本中的导入

c - 如何编写 C 函数接受(一个)任何类型的参数

swift - 如何在 Swift 3 中将 Any 转换为 CGFloat

c# - 如何判断数组是否在栈中?

python - lambda 调用@classmethod 失败

python - 如何使用tsfresh python包从时间序列数据中提取特征?

BLE 的 python3 root 权限

Python Flask 错误代码 400,消息请求版本错误

python - 为什么 Python2 到 Python3 转换器将 "items()"放入 "list"?

python - 使用相同的键对过去的条目进行计数