Python 比较元组和列表之间的元素?
我正在比较元组的元组和元组列表。 我需要在列表中找出常用元素 假设我有一个元组Python 比较元组和列表之间的元素?,python,list,tuples,Python,List,Tuples,我正在比较元组的元组和元组列表。 我需要在列表中找出常用元素 假设我有一个元组k1=((91,25),(94,27),(100,22)) 和一个列表k2=[(1,2)、(4,2)、(100,22)]。如何比较k1和k2中的元素 然后得到一个公共元素的列表 上述示例的预期输出: [(100, 22)] 你可以用一个简单的列表来理解 common_items = [item1 for item1 in list(k1) for item2 in k2 if item1 == item2] 这是输
k1=((91,25),(94,27),(100,22))
和一个列表k2=[(1,2)、(4,2)、(100,22)]
。如何比较k1
和k2
中的元素
然后得到一个公共元素的列表
上述示例的预期输出:
[(100, 22)]
你可以用一个简单的列表来理解
common_items = [item1 for item1 in list(k1) for item2 in k2 if item1 == item2]
这是输出
>>> common_items
[(100, 22)]
可以使用“设置交点”:
set(k1).intersection(k2)
这将返回:
{(100, 22)}
您可以使用简单的列表理解来迭代列表中的每个元组,并从中进行比较,或者:
print([i for i in b if i not in (set(a)^set(b))])
^
运算符+列表理解
用于获取相反的值
甚至更好:
print(set(a)&set(b))
我推荐这个,它是最短的您可以使用
过滤器
功能
k1 = ((91, 25),(94, 27),(100, 22))
k2 = [(1,2), (4, 2), (100, 22)]
print filter(lambda x: x in k1,k2)
结果:
[(100, 22)]
我们是否假设您的示例中的公共元素是
(100,22)
?@RedCricket Hi!是的,我投了赞成票,但OP想要一个输出列表。输出一个集合。如果列表有相似的元组,可能会执行list(set(k1).intersection(k2))
不会失败吗?哎呀,我不知道没有元组它也能工作。我已经做了改变。。。或者干脆set(k1)&set(k2)
@juanpa.arrivillaga编辑完成
[(100, 22)]