Is there a way to get the difference and intersection of tuples or lists in Python?
本问题已经有最佳答案,请猛点这里访问。
如果我有清单:
1 2 3 4 | a = [1, 2, 3, 4, 5] b = [4, 5, 6, 7, 8] c = a * b |
应该给我:
1 | c = [4, 5] |
和
1 | c = a - b |
应该给我:
1 | c = [1, 2, 3] |
这是为python提供的,还是我必须自己编写?
同样的方法对元组有效吗?我可能会使用列表,因为我会添加它们,但只是想知道。
如果订单无关紧要,您可以使用
1 2 3 4 5 6 | >>> a = set([1, 2, 3, 4, 5]) >>> b = set([4, 5, 6, 7, 8]) >>> a.intersection(b) set([4, 5]) >>> a.difference(b) set([1, 2, 3]) |
以下是这些操作的时间复杂性信息:https://wiki.python.org/moin/timecomplexity set。注意,子路径的顺序改变了操作的复杂性。
如果元素可以多次出现(形式上称为
1 2 3 4 5 6 7 | >>> from collections import Counter >>> a = Counter([1, 2, 3, 4, 4, 5, 5]) >>> b = Counter([4, 4, 5, 6, 7, 8]) >>> a - b Counter({1: 1, 2: 1, 3: 1, 5: 1}) >>> a & b Counter({4: 2, 5: 1}) |