gpt4 book ai didi

python - 比较两个元组的所有元素(使用 all() 功能)

转载 作者:太空狗 更新时间:2023-10-30 00:30:21 26 4
gpt4 key购买 nike

所以我知道comparisons on tuples按字典顺序工作:

Tuples and lists are compared lexicographically using comparison of corresponding elements. This means that to compare equal, each element must compare equal and the two sequences must be of the same type and have the same length.

If not equal, the sequences are ordered the same as their first differing elements. For example, cmp([1,2,x], [1,2,y]) returns the same as cmp(x,y). If the corresponding element does not exist, the shorter sequence is ordered first (for example, [1,2] < [1,2,3]).

从这里开始:

>>> a = (100, 0)
>>> b = (50, 50)
>>> a > b
True

但我想按顺序比较 2 个元组的所有元素,所以在功能上我想要类似于(使用上面的值)的东西:

>>> a > b
(True, False) #returned tuple containing each comparison
>>> all(a > b)
False

作为实践中的一个例子,对于屏幕坐标之类的东西,如果你想检查在 (0,0) 处是否有东西在屏幕“内部”,但是做了像坐标 > (0,0) 这样的比较,如果x 坐标大于 0,但 y 坐标小于它仍会返回 true,这不是本例所需要的。

作为一个子问题/讨论:
我不确定为什么以这种方式返回比较 2 个不同值的元组。你没有得到任何类型的索引,所以你从比较元组(不是测试相等性)中得到的唯一结果是在元组中的某个点,其中一个比较将抛出一个真值或假值,当它们是不相等。您如何利用它?

最佳答案

您可以通过列表理解和内置的 zip 实现此目的:

>>> a = (100, 0)
>>> b = (50, 50)
>>> [(a > b) for a, b in zip(a,b)]
[True, False]

您可以在返回的列表上使用 all() 或 any()。

关于python - 比较两个元组的所有元素(使用 all() 功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com