Skip to main content
 首页 » 编程设计

python之如何比较重复但仅在不同列表中的项目的列表列表(具有 N 项)

2025年05月04日19telwanggs

我在休假多年后重新开始编程,但我无法解决这个问题。用户正在定义分类集数量,但 RasterValue 是长度为 N 的列表

例子: ClassificationSet = (1, 2, 3, 4, 5, 6) #defined by user
RasterVal = () #length = N

我使用 ClassificationSet 作为索引将项目存储到 RasterVal 中: RasterVal(ClassificationSet).add(导入值)

RasterVal(1) = 22,23,24,25,23,23,22 
RasterVal(2) = 22,30,31,32,30,30 
RasterVal(3) = 31 

这是:RasterVal([],[22,23,24,25,23,23,22], [22,30,31,32,30,30], [31])

我想列出重复的值,但前提是它们在不同的集合中重复,而不是在同一个集合中重复。

输出应该是: 重复集 = 22, 31

非常感谢您的帮助。我已经能够比较这些集合,但它列出了重复的值,即使它们出现在同一个集合列表中也是如此。

请您参考如下方法:

@lukecampbell 是对的:

>>> lsts = [[22,23,24,25,23,23,22],[22,30,31,32,30,30],[31]] 
>>> from collections import Counter 
>>> c = Counter(x for lst in lsts for x in set(lst)) 
>>> [x for x,y in c.items() if y > 1] 
[22, 31] 

该算法的运行时间是线性的,而不是集合数量的二次方。