【问题标题】:how does any() and all() work? it returns True when I expect False [duplicate]any() 和 all() 是如何工作的?当我期望 False 时它返回 True [重复]
【发布时间】:2020-10-18 11:26:55
【问题描述】:

所以我已经阅读了有关 programiz 的所有文档,但我仍然无法弄清楚为什么这些文档运行为 True。 代码:

yey = [False]
yea = [0]

print(all((yea, yey)))
print(any((yea, yey)))

输出:

True
True

【问题讨论】:

标签: python


【解决方案1】:

列表中单个元素的值是0False

yey = [False]
yea = [0]

但是当您使用yeayey 时,检查是“列表是否为空?

print(all((yea, yey)))
print(any((yea, yey)))

将返回True,因为列表不是empty,但如果您查看第一个元素,例如:

print(all((yea[0], yey[0])))
print(any((yea[0], yey[0])))

返回

False
False

这是一个可以用来检查多个列表的函数:

yey = [False]
yea = [0]

def any_list(lists): return any([any(i) for i in lists])
def all_list(lists): return all([all(i) for i in lists])

print(all_list((yea, yey)))   # False
print(any_list((yea, yey)))   # False

【讨论】:

    【解决方案2】:

    因为bool(yea) 的计算结果为True(列表有元素)

    >>> all((yea, yey))
    True
    >>>
    >>> (yea, yey)
    ([0], [False])
    >>>
    >>> (bool(yea), bool(yey))
    (True, True)
    >>>
    

    所以,

    >>> all((True, True))
    True
    >>> any((True, True))
    True
    >>>
    

    >>> all((False, 0))
    False
    >>>
    >>> any((False, 0))
    False
    >>>
    

    【讨论】:

    • 谢谢,我明白我现在误解了什么!
    【解决方案3】:

    你很可能想要更多类似的东西

    >>> all(yea)
    False
    >>> any(yea)
    False
    

    如果yeayay 都是一个包含多个元素而不是单个值的列表,这些将更有意义。

    【讨论】:

    • 是的,它是这样工作的,但我只是不明白为什么它不能与两个参数一起工作
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2012-07-07
    相关资源
    最近更新 更多