如何比较两个元组?

时间:2014-11-23 11:44:46

标签: python

编写一个函数commonElements(t1,t2),它接受2个元组作为参数,并返回一个包含在两个元组中找到的元素的排序元组。

实施例

>>> commonElements((1, 2, 3), (2, 5, 1))
(1, 2)
>>> commonElements((1, 2, 3, 'p', 'n'), (2, 5 ,1, 'p'))
(1, 2, 'p')
>>> commonElements((1, 3, 'p', 'n'), ('a', 2 , 5, 1, 'p'))
(1, 'p')

我想在两个元组之间进行比较

 def commonElements(t1,t2):
     if t1 in t2:
        return t1 

2 个答案:

答案 0 :(得分:1)

您需要检查每个元素in t1是否为in t2,当您找到第一个公共元素时,您的代码只返回t1,如果没有公共元素,则返回None:

def commonElements(t1,t2):
    temp = []  # store  common elements
    st2  = set(t2)
    for ele in t1: # loop over each element in t1
        if ele in st2: # if it is in t2 add it to or temp list, set lookups are O(1)
            temp.append(ele)
    return tuple(sorted(temp)) # sort temp and convert to a tuple

In [4]: commonElements((1, 2, 3), (2, 5, 1))
Out[4]: (1, 2)

In [5]: commonElements((1, 2, 3, 'p', 'n'), (2, 5 ,1, 'p'))
Out[5]: (1, 2, 'p')

In [6]: commonElements((1, 3, 'p', 'n'), ('a', 2 , 5, 1, 'p'))
Out[6]: (1, 'p')

您还可以使用setsgenerator expression

def  commonElements(t1,t2):
     # find the intersection/common elements
    return tuple(sorted(set(t1).intersection(t2)))

def  commonElements(t1,t2):
    return tuple(sorted(ele for ele in t1 if ele in t2))

答案 1 :(得分:1)

您可以使用基于运算符的集合交集。

def commonElements(one, two):
    return tuple(sorted(set(one) & set(two)))

commonElements((1,2,3), (2,3,4))
# (2, 3)