urg*_*geo 6 python grouping list
给定一个列表
A = [1, 6, 13, 15, 17, 18, 19, 21, 29, 36, 53, 58, 59, 61, 63, 78, 79, 81, 102, 114]
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以对连续元素之间的差异小于 3 的所有簇进行分组?
也就是说,获得如下内容:
[13, 15, 17, 19, 21], [58, 59, 61, 63], [78, 79, 81]
Run Code Online (Sandbox Code Playgroud)
我想知道是否存在任何内置函数,但我找不到类似的东西。我试图用 来解决这个groupby问题itertools,但我被困住了。先感谢您。
这是一种使用迭代的方法。
前任:
A = [1, 6, 13, 15, 17, 18, 19, 21, 29, 36, 53, 58, 59, 61, 63, 78, 79, 81, 102, 114]
res = []
temp = []
l = len(A)-1
for i,v in enumerate(A):
if i+1 > l:
break
if abs(v - A[i+1]) < 3:
temp.append(v)
else:
if temp:
temp.append(v)
res.append(temp)
temp = []
print(res)
Run Code Online (Sandbox Code Playgroud)
输出:
[[13, 15, 17, 18, 19, 21], [58, 59, 61, 63], [78, 79, 81]]
Run Code Online (Sandbox Code Playgroud)