编写一个函数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
答案 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')
您还可以使用sets或generator 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)