python - 将连续的数字序列附加到列表中

标签 python

我想要一个包含连续数字序列的列表列表

我有一个排序的整数列表
[1,2,3,4,6,7,9,10,12,13,14,17,18,19,21]

我似乎无法为此找到合适的算法(查找 DP,但这看起来不像我的情况)

我想要这样的输出
[ [1,2,3,4], [6,7], [9,10], [12,13,14], [17,18,19] , [21]

最佳答案

为了获得更好的性能,您可能想尝试使用 numpy。首先使用 np.diff 获取第一个差异大于 1 的索引, 并使用它们将数组分成几个 block np.split :

import numpy as np
a = np.array([1,2,3,4,6,7,9,10,12,13,14,17,18,19,21])

np.split(a,np.flatnonzero(np.diff(a) > 1) + 1)

[array([1, 2, 3, 4]),
 array([6, 7]),
 array([ 9, 10]),
 array([12, 13, 14]),
 array([17, 18, 19]),
 array([21])]

关于python - 将连续的数字序列附加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870076/

相关文章:

python - 在 Pandas 的一列中切片字符串

python - 融合表导入行

python - 关于 Ubuntu 18.04 LTS 和 python 的问题

python - 将包含元组的 DataFrame 列转换为行

Python 在用户生成的整数列表、While 循环和 Try-Except 中防止重复

python - 如何在opencv中合并轮廓?

python - 运行时错误与 Django on Amazon AWS EC2 Linux AMI 问题

python - 使用正则表达式在 Python 中查找数据

javascript - App Engine 和 Facebook : which libraries to use?

python - 在 GridSearchCV 的 roc_auc 分数中手动重现 Sklearn SVC