情况如下:假设有一些对象的数组;为简单起见,我们取字符数组。事先不知道里面有什么符号。您需要以某种方式将其分成几个仅包含相同字符的数组。例如
arr = ['a', 'b', 'a', 'c', 'b', 'd', 'c', 'a', 'd']
因此,输出应该是四个数组:
arr1 = ['a', 'a', 'a']
arr2 = ['b', 'b']
arr3 = ['c', 'c']
arr3 = ['d', 'd']
或者由这些数组组成的二维数组
arr = [['a', 'a', 'a'], ['b', 'b'], ['c', 'c'], ['d', 'd']]
尝试做这样的事情
arr = sorted(arr)
a = []
b = []
for i in range(1, len(arr)-1):
if (arr[i] == arr[i+1]):
a.append(arr[i])
else:
b.append(a)
a = []
然而,结果是
[['a'], ['b'], ['c']]
在这里,确切地说,需要的不是Python实现,而是对这个算法的理解,这似乎是一个简单的任务,但我就是不知道如何解决它
如果不用于形成新的中间数据结构序列(字典),并理解一个简单算法的操作:
尝试groupby:
如果我理解正确,那么你想要最容易理解的算法
collections.Counter是专门为这个任务设计的: