【发布时间】:2021-09-20 23:19:06
【问题描述】:
我有以下列表 A,并希望创建列表列表 B。如何检测重复元素并避免后面的重复,因为两者之间有不同的元素?
A = [1,3,3,3,3,4,4,4,6,6,6,6,3,3,4,4,4,4,5]
B = [[1],[3,3,3,3],[4,4,4],[6,6,6,6],[3,3],[4,4,4,4],[5]]
【问题讨论】:
我有以下列表 A,并希望创建列表列表 B。如何检测重复元素并避免后面的重复,因为两者之间有不同的元素?
A = [1,3,3,3,3,4,4,4,6,6,6,6,3,3,4,4,4,4,5]
B = [[1],[3,3,3,3],[4,4,4],[6,6,6,6],[3,3],[4,4,4,4],[5]]
【问题讨论】:
itertools.groupby 可以为您做到这一点。
>>> [list(x[1]) for x in itertools.groupby(A)]
[[1], [3, 3, 3, 3], [4, 4, 4], [6, 6, 6, 6], [3, 3], [4, 4, 4, 4], [5]]
【讨论】:
A = [(a,1),(b,3),(c,3),,(b,3),(a,3),(b,4),(c,4),(d,4),(e,6),(a,6),(c,6),(d,6),(a,3),(b,3),(c,4),(d,4),(c,4),(e,4),(a,5)] 其中 a,b,c,d,e 无关紧要,但我仍然想根据 1,2,3... 进行分组?是否可以对给定的元组输入索引进行分组?
key 参数用于groupby,类似于groupby(A, key=lambda v: v[1])。