【发布时间】:2018-05-09 14:29:57
【问题描述】:
根据我对交集函数的理解,它发现列表中的元素之间完全重叠。例如:
tup_1 = [(1,2,3),(4,5,6)]
tup_2 = [(4,5,6)]
ol_tup = set(tup_1).intersection(tup_2)
print ol_tup
会产生:
set([(4, 5, 6)])
但是,假设我的元组列表是这样设置的:
tup_1 = [(1,2,3),(4,5,5)]
tup_2 = [(4,5,6)]
tup_1 中的第二个元组和 tup_2 中的第一个元组的 2 个元素有重叠。如果我想用python返回这2个元组:(4,5,5)和(4,5,6),有没有比这个嵌套for循环更简单的方法(下)?
for single_tuple_1 in tup_1:
for single_tuple_2 in tup_2:
if single_tuple_1[0] == single_tuple_2[0] and single_tuple_1[1] == single_tuple_2[1]:
print single_tuple_1,single_tuple_2
编辑:
对于这种情况,假设顺序很重要并假设元组包含 5 个元素:
tup_1 = [(1,2,3,4,5),(4,5,6,7,8),(11,12,13,14,15)]
tup_2 = [(1,2,3,4,8),(4,5,1,7,8),(11,12,13,14,-5)]
我想找到在各自的前 4 个元素中相互交叉的元组。所以结果应该是:
[(1,2,3,4,5),(1,2,3,4,8),(11,12,13,14,15),(11,12,13,14,-5)]
代码将如何更改以适应这种情况?
【问题讨论】:
-
tup_2是否总是包含一个元组? -
如果元素与其他两个重叠怎么办?你会打印两对吗?在这种情况下,我认为没有比二次方更快的方法,即比较每一对。
-
另外,元组中元素的位置重要吗?
-
您是否总是想检查两个共同点?如果还有更多呢?
-
以下解决方案之一有帮助吗?如果接受,请随意接受(左侧的绿色勾号),或要求澄清。
标签: python list for-loop tuples intersection