我有n个数字 list 。我要确保每个列表都包含该特定列表的唯一元素。 IE。其余任何一个都没有“共享”重复项。
使用两个列表确实很容易做到,但是使用n个列表则有点棘手。

e.g.
mylist = [
[1, 2, 3, 4],
[2, 5, 6, 7],
[4, 2, 8, 9]
]

变成:
mylist = [
[1, 3],
[5, 6, 7],
[8, 9]
]

最佳答案

from collections import Counter
from itertools import chain

mylist = [
    [1,2,3,4],
    [2,5,6,7,7],
    [4,2,8,9]
]

counts = Counter(chain(*map(set,mylist)))

[[i for i in sublist if counts[i]==1] for sublist in mylist]
#[[1, 3], [5, 6, 7, 7], [8, 9]]

10-05 23:07
查看更多