我有两个元组列表,如下所示:
a = [(18, 299, 70, 33), (18, 323, 70, 34),
(18, 448, 70, 35), (18, 548, 70, 36), (18, 613, 70, 37)]
b = [(18, 223, 70, 37), (18, 299, 70, 38),
(18, 323, 70, 39), (18, 448, 70, 40), (18, 548, 70, 41), (18, 613, 70, 42)]
我想要的:
(一)。我试图打印在b
中但不在a
中的元素
(二)。我想以这样一种方式比较上面所示的列表,即只比较单个元组的前三个元素,而不管该元组的最后一个元素是否不匹配,即37
,38
,39
。。。。所以在上述情况下,我希望我的答案是:
因此,正如您在本例中看到的,在比较单个元组时,算法将完全忽略最后一个数字或第四个元素。因此,我希望如果元组的前三个元素匹配,那么即使第四个元素可能相同也可能不相同,它也可以预测没有差异。在
我尝试了:
除了搜索解决方案,我只想尝试set(b_value)-set(a_value)
方法。但我知道它不会起作用,因为结果是这样的:
set([(18, 613, 70, 42), (18, 448, 70, 40), (18, 548, 70, 41), (18, 299, 70, 38), (18, 323, 70, 39), (18, 223, 70, 37)])
这是非常明显的结果,因为所有元组的最后一个元素不匹配,因此该方法预测所有这样的元组都是不匹配的。在
编辑: 我希望在结果中保留第4个元素的值,因此删除所有元组中的所有第4个元素并进行比较不是一个选项。在
为包含没有最后一个元素的元组的第一个列表生成一个集合;您可以在
b
上执行第二个循环,以收集第一个元素不在集合中的元素:从算法上讲,这与转换成集合和产生集合差的工作量相同。在
演示:
^{pr2}$相关问题 更多 >
编程相关推荐