检查列表是否有重复的列表

检查列表是否有重复的列表,第1张

检查列表是否有重复的列表

您可以计算列表推导中的出现次数,将其转换为,

tuple
以便可以哈希并应用唯一性:

routes = [[1, 2, 4, 6, 10], [1, 3, 8, 9, 10], [1, 2, 4, 6, 10]]dups = {tuple(x) for x in routes if routes.count(x)>1}print(dups)

结果:

{(1, 2, 4, 6, 10)}

足够简单,但是由于重复调用,导致很多循环在后台进行

count
。还有另一种方式,涉及散列,但是复杂度较低,可以使用
collections.Counter

from collections import Counterroutes = [[1, 2, 4, 6, 10], [1, 3, 8, 9, 10], [1, 2, 4, 6, 10]]c = Counter(map(tuple,routes))dups = [k for k,v in c.items() if v>1]print(dups)

结果:

[(1, 2, 4, 6, 10)]

(只计算元组转换的子列表-解决哈希问题-,然后使用列表推导生成重复列表,仅保留出现多次的项目)

现在,如果您只想检测出某些重复列表(不打印它们),则可以

  • 将列表列表转换为元组列表,以便您可以将它们散列到一组中
  • 比较列表的长度与集合的长度:

如果有重复项,则len不同:

routes_tuple = [tuple(x) for x in routes]    print(len(routes_tuple)!=len(set(routes_tuple)))

或者,

map
很少能够在Python 3中使用它,因此:

print(len(set(map(tuple,routes))) != len(routes))


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5667990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存