我是python的新手,只是学习东西,因为我做我的项目,这里我有两个列表列表,我需要比较和分离在A - >中找到的差异; B和差异发现b - >一个 比较的最佳方式是什么。
A=[[1L, 'test_case_1'], [1L, 'test_case_2'], [2L, 'test_case_1']]
B=[[1L, 'test_case_1'], [1L, 'test_case_4'], [2L, 'test_case_1'], [2L, 'test_case_3']]
答案 0 :(得分:4)
假设您可以根据我的评论使用元组的列表,这对Junuxx答案的简单修改效率更高
A - B:
>>> setb = set(B)
>>> [x for x in A if not x in setb]
[(1L, 'test_case_2')]
B - A:
>>> seta = set(A)
>>> [x for x in B if not x in seta]
[(1L, 'test_case_4'), (2L, 'test_case_3')]
答案 1 :(得分:2)
您可以使用列表理解轻松完成此操作
A - B:
>>> [x for x in A if not x in B]
[[1L, 'test_case_2']]
B - A:
>>> [x for x in B if not x in A]
[[1L, 'test_case_4'], [2L, 'test_case_3']]
答案 2 :(得分:0)
A - B:
>>>[p for p in A if p not in B]
[[1L, 'test_case_2']]
B - A:
>>>[p for p in B if p not in A]
[(1L, 'test_case_4'), (2L, 'test_case_3')]
快速方式:首先可以将B
设为set()
,然后使用 Generator
A - B:
>>>B = [(l[0], l[1]) for l in B]
>>>set_b = set(B)
>>>(p for p in A if p not in set_b)
<generator object <genexpr> at 0x00BCBBE8>