这是我想要做的:
pair1 = (1,2)
pair2 = (3,3)
pair3 = (3,2)
# Is there a way that I can compare any of these two objects and yields the following:
def myComp(...):
#...
myComp(pair1,pair2) gives False
myComp(pair1,pair3) gives True #They both have 2 at index 1
myComp(pair1,pair3) gives True #They both have 3 at index 0
任何想法或建议将不胜感激。
答案 0 :(得分:1)
与使用if语句条件进行硬编码相比,内置函数更容易实现。您可以使用zip
和any
:
def myComp(pair1, pair2):
return any(x == y for x, y in zip(pair1, pair2))
>>> myComp(pair1, pair2)
False
>>> myComp(pair2, pair3)
True
>>> myComp(pair1, pair3)
True
会发生什么,使用zip
将两个列表压缩在一起,创建一个元组生成器。这是在生成器理解中解压缩的。然后,any
会测试是否有任何比较x == y
为True
。如果是,则结果为True
并返回。否则,返回False
。
这种方法适用于任意大小的列表,只要它们相同。
答案 1 :(得分:-1)
你的myComp函数只需要一个if进行比较,就像是:
def myComp(pair1,pair2)
if (pair1[0]==pair2[0] || pair1[1]==pair2[1])
return true;
return false;