作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果运行不超过 3,我如何将其拆分为序列/运行/后续数字?
有一个数组如下
[1, 2, 3, 5, 9, 10, 16, 17, 18, 19]
我的预期输出将是以下数组:
[1,2,3]
[5]
[9, 10]
[16,17,18]
[19]
例如[[1,2,3],[5],[9,10],[16,17,18],[19]]
如果是长度为 8 的游程,例如[1, 2, 3, 4, 5, 6, 7, 8]
我想获得 8/3 + 1 = 2
列表:
[1,2,3]
[4,5,6]
[7, 8]
最佳答案
如果您将当前列表命名为 x
并将新的输出列表命名为 new_list
,您可以尝试(未经测试并假设原始列表中没有重复值)
k = 0
new_list = [[]]
for i in range(len(x) - 1):
if x[i] not in new_list[max(k - 1, 0)]:
new_list[k].append(x[i])
for j in range(i + 1, len(x)):
if x[j] - x[i] == j - i and x[j] not in new_list[k]:
new_list[k].append(x[j])
k += 1
new_list.append([])
new_list = [x for x in new_list if x != []] # gets rid of empty list at the end
关于python 将数组拆分为运行/序列 - 最好是 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791945/
我是一名优秀的程序员,十分优秀!