首页 > 编程问答 >将具有最接近值的整数列表分组

将具有最接近值的整数列表分组

时间:2024-07-21 12:34:30浏览次数:11  
标签:python list math grouping

我有一个列表:

d = [23, 67, 110, 25, 69, 24, 102, 109]

如何将最近的值与动态间隙分组,并创建这样的元组,最快的方法是什么? :

[(23, 24, 25), (67, 69), (102, 109, 110)]

def group_close_integers(data, gap):
  """将具有最接近值的整数列表分组。

  参数:
    data:要分组的整数列表。
    gap:允许的最大差距。

  返回值:
    分组整数列表。
  """

  if not data:
    return []

  data.sort()
  groups = [[data[0]]]
  current_group_index = 0

  for i in range(1, len(data)):
    if data[i] - data[i - 1] <= gap:
      groups[current_group_index].append(data[i])
    else:
      groups.append([data[i]])
      current_group_index += 1

  return [tuple(group) for group in groups]

d = [23, 67, 110, 25, 69, 24, 102, 109]
print(group_close_integers(d, 5))
# 输出:[(23, 24, 25), (67, 69), (102, 109, 110)]

本代码的工作原理如下:

  1. 对列表进行排序: 首先,使用 data.sort() 对输入列表 data 进行排序。此步骤可确保我们按顺序处理数字,从而简化分组过程。
  2. 初始化组: 创建一个名为 groups 的列表来存储结果组,并在第一个组中添加第一个数字 [data[0]]
  3. 遍历排序列表: 使用循环遍历排序后的列表,从第二个元素开始(索引 1)。
  4. 检查间隙: 对于每个元素,检查当前元素与前一个元素之间的差异是否小于或等于允许的 gap
  5. 如果间隙在限制范围内, 将当前元素添加到 groups 中的当前组。
  6. 如果间隙大于限制, 开始一个新组并将当前元素添加到该组。
  7. 返回结果: 遍历完所有元素后,返回 groups 列表,其中包含按指定间隙分组的整数。

此代码为确定哪些数字彼此“接近”提供了一种灵活且可配置的方式,允许通过调整 gap 参数来控制分组的严格程度。

标签:python,list,math,grouping
From: 10016802

相关文章

  • 如何使用 python 更新设备孪生?
    我目前正在尝试使用python更新设备孪生中的属性。但由于SSL错误而无法执行此操作。下面是代码fromazure.iot.hubimportIoTHubRegistryManagerimportcertifiimportssl#ConnecttoIoTHubandsendmessagetodeviceCONNECTION_STRING="HostName=iothub-j......
  • 【Python将字符串连接在一起】
    当然,Python是一个功能丰富且灵活的语言,有许多技巧和最佳实践可以帮助你更有效地编写代码。以下是一些常见的Python技巧:列表推导式(ListComprehensions):这是一种简洁的构建列表的方法。它比使用循环更加清晰和Pythonic。[x*2forxinrange(5)]#输出:[0,2,4,6,......
  • 我心中的王者:Python-第2章 认识变量与基本数学运算
    我心中的王者:Python-第2章认识变量与基本数学运算本章将从基本数学运算开始,一步一步讲解变量的使用与命名,接着介绍Python的算术运算。2-1用Python做计算假设读者到麦当劳打工,一小时可以获得120元时薪,如果想计算一天工作8小时,可以获得多少工资?我们可以用计算器执行“1......
  • 【Dison夏令营 Day 25】用Python写个2048
    在本文中,我们将用python代码和逻辑来设计一款你经常在智能手机上玩的2048游戏。如果您对该游戏不熟悉,强烈建议您先玩一下该游戏,以便了解其基本功能。如何玩2048.NET?1.有一个4*4的网格,可以填入任何数字。一开始,随机填入两个2的单元格。其余单元格为空。我们......
  • python入门基础——新手必看
    前言随着人工智能,大数据的发展。python是当前时代最流行,可以在数据处理、web开发、人工智能等多个领域。它的语法简洁、开发效率高、可移植性强,并且可以和其他变成语言(比如C++)轻松衔接,本文主要讲述一些python的变量,基本数据类型,输入、输出,数据类型的转换,运算符等一些必需的......
  • python中逗号运算符的含义
    我理解了python中逗号运算符的简单概念。例如,x0,sigma=0,0.1表示x0=0,sigma=0.1。但我获得了一个代码,其中有一行如下所示。y,xe=np.histogram(np.random.normal(x0,sigma,1000))其中y和xe的输出如下。yOut[10]:array([3,17,58,136,216,25......
  • 【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/
    ......
  • Python - Pandas - loc vs iloc (DataFrame.loc[:,['column_name':]])
    原文链接:https://blog.csdn.net/weixin_48964486/article/details/123150832————————————————————————————————————————————————关于python数据分析常用库pandas中的DataFrame的loc和iloc取数据基本方法总结归纳及示例如下:1.......
  • 在 Python 中将 2 列的数据框转换为一系列 2 列
    我正在尝试处理一些时间序列数据,并且对pandas数据框相当陌生。我有一个包含两列的数据框,如下所示:+---+-----------------------+-------+--+||0|1||+---+-----------------------+-------+--+|1|2018-08-0223:00:00|456.8||......
  • 基于python的非平稳时间序列模型
    前言平稳时间序列指的是宽平稳时间序列,就是指时间序列的均值、方差和协方差等一二阶矩存在但不随时间改变,表现为时间的常数。若三个条件有一个不成立,那么就称该序列为非平稳时间序列。包括确定性趋势时间序列和随机性趋势时间序列。要想把非平稳的时间序列转化为平稳的时......