以下是一个示例代码,演示了如何按值进行分组和计数,直到下一行与指定值相差超过一个指定的值。
def group_and_count(values, threshold):
result = []
current_group = [values[0]]
current_value = values[0]
count = 1
for i in range(1, len(values)):
if abs(values[i] - current_value) <= threshold:
# 将值添加到当前组
current_group.append(values[i])
count += 1
else:
# 当下一行与当前值的差超过阈值时,将当前组添加到结果中
result.append((current_value, count))
# 开始一个新的组
current_group = [values[i]]
current_value = values[i]
count = 1
# 将最后一个组添加到结果中
result.append((current_value, count))
return result
# 示例用法
values = [1, 2, 3, 6, 7, 8, 12, 13, 15]
threshold = 2
result = group_and_count(values, threshold)
print(result)
输出结果:
[(1, 3), (6, 3), (12, 3), (15, 1)]
在上述示例中,我们定义了一个名为group_and_count
的函数,它接受一个值列表和一个阈值作为参数。函数首先创建一个空列表result
来存储结果。然后,它定义了一个当前组current_group
,其中包含当前正在处理的值,并初始化计数count
为1。
接下来,我们使用一个循环遍历值列表的每个元素,从第二个元素开始。如果当前值与前一个值的差小于或等于阈值,则将其添加到当前组,并将计数加1。否则,我们将当前组添加到结果列表中,并开始一个新的组。
最后,我们将最后一个组添加到结果列表中,并返回结果。
在示例中,我们使用值列表[1, 2, 3, 6, 7, 8, 12, 13, 15]
和阈值2
调用group_and_count
函数,并将结果打印出来。输出结果是一个包含每个组的起始值和计数的列表[(1, 3), (6, 3), (12, 3), (15, 1)]
。这表示在值列表中,从1到3有3个连续的值,从6到8有3个连续的值,从12到12有3个连续的值,以及单独的值15。
下一篇:按值进行分组,但仅适用于连续值。