小编use*_*477的帖子

找到2个python列表之间的"重叠"

给出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)

另一方面,对于我要求的是什么比"重叠"和"剩余"更准确的名称?

python list

14
推荐指数
3
解决办法
1万
查看次数

标签 统计

list ×1

python ×1