栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号