Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Nested - Fatal编程技术网

可以使用嵌套列表/元组进行Python操作(交集、并集、重复)?

可以使用嵌套列表/元组进行Python操作(交集、并集、重复)?,python,list,nested,Python,List,Nested,案例: a=[(1,2)、(2,3)、(4,5)、(1,6)、(1,7)] b=[(5,2)、(6,3)、(4,5)、(6,8)、(1,9)] 如何按第一个元组项删除重复项 一项研究的结果将是: a = [(1,2),(2,3),(4,5),(1,6),(1,7)] b = [(5,2),(6,3),(4,5),(6,8),(1,9)] [(1,2),(2,3),(4,5)] [(1,2),(2,3),(4,5)] b的结果是: a = [(1,2),(2,3),(4,5),(1,6),(1,7

案例:

a=[(1,2)、(2,3)、(4,5)、(1,6)、(1,7)] b=[(5,2)、(6,3)、(4,5)、(6,8)、(1,9)] 如何按第一个元组项删除重复项

一项研究的结果将是:

a = [(1,2),(2,3),(4,5),(1,6),(1,7)] b = [(5,2),(6,3),(4,5),(6,8),(1,9)] [(1,2),(2,3),(4,5)] [(1,2),(2,3),(4,5)] b的结果是:

a = [(1,2),(2,3),(4,5),(1,6),(1,7)] b = [(5,2),(6,3),(4,5),(6,8),(1,9)] [(1,2),(2,3),(4,5)] [(5,2),(6,3),(4,5),(1,9)] 如何合并两者而不重复 结果将是:[(1,2)、(2,3)、(4,5)、(5,2)、(6,3)]

[(5,2),(6,3),(4,5),(1,9)] [(1,2),(2,3),(4,5),(5,2),(6,3)] 我怎样才能到达两者的交叉点 结果将是:[(1,2)、(4,5)]

[(5,2),(6,3),(4,5),(1,9)] [(1,2),(2,3),(4,5),(5,2),(6,3)] 这样做容易吗

致意 克里斯

使用集合:

[(1,2),(4,5)] 工会:

>>> seen = set()
>>> s1 = [x for x in a if x[0] not in seen and not seen.add(x[0])]
>>> seen = set()
>>> s2 = [x for x in b if x[0] not in seen and not seen.add(x[0])]
>>> s1
[(1, 2), (2, 3), (4, 5)]
>>> s2
[(5, 2), (6, 3), (4, 5), (1, 9)]
交叉口:

>>> from itertools import chain
>>> seen = set()
>>> [x for x in chain(s1,s2) if x[0] not in seen and not seen.add(x[0])]
[(1, 2), (2, 3), (4, 5), (5, 2), (6, 3)]

下面是一个简单的Python3示例,用于删除重复项。另一位撰稿人报道了另外两个

>>> se1 = set(x[0] for x in s1)
>>> se2 = set(x[0] for x in s2)
>>> inter = se1 & se2
>>> inter
set([1, 4])
>>> seen = set()
>>> [x for x in chain(s1,s2) if x[0] in inter and x[0] not in seen
                                                          and not seen.add(x[0])]
[(1, 2), (4, 5)]

为什么(1,2)在十字路口?如果A和B都有一个元素具有与x相同的“键”(这对元素中的第一个元素),那么我们是否说x是A和B交点的元素?如果是这样的话,我们取第二个元素是什么?可能重复@CalebLevine,因为我需要每个元组项的第一个元素的交集。所以在a和b中,从a中的1((1,9)和b中的(1,2)开始两个元组。交叉点应为(1,9)或(1,2)。。。(4,5)也是!交叉口的期望值是多少?非常感谢!第一个正是我想要的。并集和交集也应该引用元组的第一项(在第一个示例中是如何引用的)。无重复项a和b的交集结果应该是:[(1,2),(1,9)]。对于联合,同样的。@user2543694交集应该是
[(1,2),(4,5)]
,根据你在问题正文中发布的内容。为什么你需要
枚举
[::-1]
-为什么不干脆
反转(a)
,并使用
作为所有人的密钥(任何有用的东西都不需要它)。无论如何-这不会以与OPs示例所示相同的订单输出结束。。。