2024-03-29 08:21:01 发布
网友
我有两张单子
A=[['1','1'],['2','1'],['3','2']] B=[['1','1'],['2','2']]
我想对这些只比较第一个元素的A-B操作。在
所以A-B应该给
到目前为止,我只能做行比较
[x for x in A if not x in B]
{cd1>输出}
这个?在
>>> [i for i in A if not any(i[0] == k for k, _ in B)] [['3', '2']]
any()用于检查每个列表的第一个元素是否与B中每个列表中的任何其他值相同。如果是,则返回True,但由于我们希望与此相反,我们使用not any(...)
any()
B
not any(...)
我可以想出一个不同的列表理解
A=[['1','1'],['2','1'],['3','2']] B=[['1','1'],['2','2']] b = dict(B) output_list = [item for item in A if item[0] not in b]
这也是保序的,即使A的内部列表中有重复的fist元素也可以工作。如果需要,还可以扩展它来检查精确的对,如下所示:
您也可以使用^{}并在此处设置差异:
>>> from collections import OrderedDict >>> dic1 = OrderedDict((k[0],k) for k in A) >>> [dic1[x] for x in set(dic1) - set(y[0] for y in B)] [['3', '2']]
总体复杂性将是O(max(len(A), len(B)))
O(max(len(A), len(B)))
如果顺序无关紧要,那么正常的口述就足够了。在
这个?在
any()
用于检查每个列表的第一个元素是否与B
中每个列表中的任何其他值相同。如果是,则返回True,但由于我们希望与此相反,我们使用not any(...)
我可以想出一个不同的列表理解
这也是保序的,即使A的内部列表中有重复的fist元素也可以工作。如果需要,还可以扩展它来检查精确的对,如下所示:
^{pr2}$您也可以使用^{} 并在此处设置差异:
总体复杂性将是
O(max(len(A), len(B)))
如果顺序无关紧要,那么正常的口述就足够了。在
相关问题 更多 >
编程相关推荐