让我们假设我有一个很长的列表,其中每个子列表都是两个不同数字的组合。 示例:
[ [1,6], [7,3], [11,2], [6,3], [8,1], [4,11] ]
我还输入了三个数字:A,B和C(例如6、1、3)。
现在,我要检查A号是否同时具有B和С号。对于上面的示例,答案是肯定的,因为数字(6)与B(1)-[1,6]一对,而对С(3)-[6,3]也有一对。
由于所有这些数字都可以通过任何方式相互组合,所以我现在使用的是肮脏的蛮力解决方案:
if ([A, B] in list and [A, C] in list) or
([A, B] in list and [C, A] in list) or
([B, A] in list and [A, C] in list) or
([B, A] in list and [C, A] in list) or...
必须有更好的方法!
答案 0 :(得分:0)
如何通过列表理解来过滤列表中的组件?
>>> target_list = [ [1,6], [7,3], [11,2], [6,3], [8,1], [4,11] ]
>>> A, B, C = 6, 1, 3
>>> filtered_list = [l for l in target_list if A in l and (B in l or C in l)]
>>> filtered_list
[[1, 6], [6, 3]]
>>> if len(filtered_list) == 2:
... do_something()