这样做的明智之举是使用一种简单高效的数据结构,如
Counter:
>>> ids = [random.randrange(100) for _ in range(200)]
>>> from collections import Counter
>>> counts = Counter(ids)
>>> dupids = [id for id in ids if counts[id] > 1]
构建计数器需要O(N)时间,而不是O(N log N)时间进行排序,或O(N ^ 2)每次从头开始计算每个元素.
作为旁注:
But the ids list is likely to get quite long, and I realistically don’t want a while loop predicated on an expensive len call if I can avoid it.
len并不昂贵.它是恒定的时间,并且(至少在内置类型列表列表中)它的速度与函数可能在Python中完全没有做任何事情一样快.
代码中昂贵的部分是在循环内调用elem – 这意味着对于每个元素,你必须将它与潜在的每个元素进行比较,这意味着二次时间.
最后
以上就是无情小土豆最近收集整理的关于python删除列表中重复元素while循环_python – 从列表中删除唯一值并仅保留重复项...的全部内容,更多相关python删除列表中重复元素while循环_python内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复