如何找到重复值并合并它们? – Python
发布时间:2020-12-20 12:14:40 所属栏目:Python 来源:网络整理
导读:所以基本上你有一个列表如下: l = ['a','b','a','c','c'] 输出应该是: [['a','a'],['b','b'],['c','c']] 所以基本上将重复的值放在一个列表中, 我试过了: l = ['a','c']it=iter(sorted(l))next(it)new_l=[]for i in sorted(l): new_l.append([]) if next(
所以基本上你有一个列表如下:
l = ['a','b','a','c','c'] 输出应该是: [['a','a'],['b','b'],['c','c']] 所以基本上将重复的值放在一个列表中, 我试过了: l = ['a','c'] it=iter(sorted(l)) next(it) new_l=[] for i in sorted(l): new_l.append([]) if next(it,None)==i: new_l[-1].append(i) else: new_l.append([]) 但是不起作用,如果它确实有效,它就不会有效率 解决方法
对列表排序然后使用itertools.groupby:
>>> from itertools import groupby >>> l = ['a','c'] >>> [list(g) for _,g in groupby(sorted(l))] [['a','c']] 编辑:这可能不是最快的方法,排序是平均情况的O(n log n)时间复杂度,并非所有解决方案都需要(参见注释) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |