Python 根据连续值的距离将其分组

Python 根据连续值的距离将其分组,python,Python,我有一张号码表: numbers = [1,2,3,14,23,45,46,47] 我想创建一个“python结构”(我不知道具体使用什么),包含距离小于5的系列 在这种情况下,我应该: 1,2,3 45,46,47 您能帮助我吗?您可以循环数字,检查差异,并相应地将值附加到结果中: results = [[numbers[0]]] # initialize the result with the first element of numbers for x, y in

我有一张号码表:

numbers = [1,2,3,14,23,45,46,47]
我想创建一个“python结构”(我不知道具体使用什么),包含距离小于5的系列

在这种情况下,我应该:

1,2,3
45,46,47

您能帮助我吗?

您可以循环数字,检查差异,并相应地将值附加到结果中:

results = [[numbers[0]]]           # initialize the result with the first element of numbers
for x, y in zip(numbers, numbers[1:]):         # use zip to get adjacent values
    if y - x < 5:
        results[-1].append(y)      # if difference is < 5 append result to the last sublist of result
    else:
        results.append([y])        # otherwise start a new sublist
​
results
# [[1, 2, 3], [14], [23], [45, 46, 47]]
results=[[numbers[0]]]#使用数字的第一个元素初始化结果
对于zip中的x,y(数字,数字[1:]):#使用zip获取相邻值
如果y-x<5:
结果[-1]。追加(y)#如果差值小于5,则将结果追加到结果的最后一个子列表
其他:
results.append([y])#否则启动一个新的子列表
​
结果
# [[1, 2, 3], [14], [23], [45, 46, 47]]

如果
数字=[1,2,3,7]
7
是否属于该组?它在数字3的5以内,但距离起始数字1的距离超过5。那么,5是否适用于第一个和最后一个数字之间的整个跨度,还是适用于每个数字之间的最大差值?是的,7将是组的一部分,因为它从上一个数字(3)开始在5之内…我不知道这与数据帧有何关系,您的输入或输出看起来都不像数据帧。也许你可以再解释一下。@Psidom对不起…也许数据框不是我想要的。。。我需要一个能够包含不同长度数组的结构…好的。所以这些数字被排序了,你想根据相邻的差异进行分割吗?