给出2个列表:
a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]
Run Code Online (Sandbox Code Playgroud)
我想找到"重叠":
c = [3,4,5,5,6]
Run Code Online (Sandbox Code Playgroud)
我也喜欢它,如果我可以提取"剩余"部分a和b不在c中.
a_remainder = [5,]
b_remainder = [1,4,7,]
Run Code Online (Sandbox Code Playgroud)
注意:a中有三个5,b有两个.b里面有两个4,有一个.
结果列表c应该有两个5(由列表b限制)和一个4(由列表a限制).
这给了我想要的东西,但我不禁想到有更好的方法.
import copy
a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]
c = []
for elem in copy.deepcopy(a):
if elem in b:
a.pop(a.index(elem))
c.append(b.pop(b.index(elem)))
# now a and b both contain the "remainders" and c contains the "overlap"
Run Code Online (Sandbox Code Playgroud)
另一方面,对于我要求的是什么比"重叠"和"剩余"更准确的名称?