Python all() 方法

标签 python

我想知道下面的结果是如何产生 True 的。所有条件都不为 True?

有什么意见吗?

>>> listitem=['a','h','o','t']
>>> valid_compare_diff
['0', '1', '2', '3', '4']
>>> all(x for x in listitem if x in valid_compare_diff)
True

新变化:-

>>> listitem=['0']
>>> valid_compare_diff
['0', '1', '2', '3', '4']
>>> all(x for x in listitem if x in valid_compare_diff)
True

当列表理解产生结果时,为什么结果仍然是 True..??

最佳答案

理解将为空,因为 x 的值不满足条件:

如果 x 在 valid_compare_diff 中

因此:

>>> [x for x in listitem if x in valid_compare_diff]
[]

结果为 [],当传递给 all 时返回 True

>>> all([])
True

之所以如此,是因为 all 的定义指出,如果传递给它的 iterable 为空,则它返回 True:

all(...)
    all(iterable) -> bool

    Return True if bool(x) is True for all values x in the iterable.
    If the iterable is empty, return True.

关于Python all() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651310/

相关文章:

python - 使用列表理解 Python 创建新列

python - 当 numpy 数组被 C 函数改变时,魔法就发生了

python - 在 Python 中将 5 星评级量表转换为 'Positive' 和 'Negative' 量表很困难

python - 如何使用 IMAPClient 将电子邮件标志更改为最近

python - 如何序列化 pyspark 管道对象?

python - 我可以在没有 GUI 的情况下使用 OS X 10.8 的语音识别/听写吗?

python - 如何使用 PyQt5 QCompleter 进行代码补全

Python argparse : get an argument without parsing

python - 如何在 pandas (python) 中将时间对象转换为日期时间格式?

python - 如何使用 FreeTDS ODBC 连接到 SQL Server