Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较元组和列表之间的元素?_Python_List_Tuples - Fatal编程技术网

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)]