所以基本上例如你有一个列表:
l = ['a','b','a','b','c','c']
输出应该是:
[['a','a'],['b','b'],['c','c']]
所以基本上把复制到列表中的值放在一起,
我试过了:
l = ['a','b','a','b','c','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','b','a','b','c','c']
>>> [list(g) for _, g in groupby(sorted(l))]
[['a', 'a'], ['b', 'b'], ['c', 'c']]
编辑:这可能不是最快的方法,排序是平均情况下的 O(n log n) 时间复杂度,并不是所有解决方案都需要(见评论)
关于python - 如何查找重复值并合并它们? - Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52775737/