将整数列表分解为递增序列的列表
发布于 2021-01-29 14:59:35
假设列表中没有连续的整数。
我已经尝试过使用NumPy(np.diff
)来解决每个元素之间的差异,但是还无法使用它来获得答案。下面是输入(第一行)和预期输出(第二行)的两个示例。
[6, 0, 4, 8, 7, 6]
[[6], [0, 4, 8], [7], [6]]
[1, 4, 1, 2, 4, 3, 5, 4, 0]
[[1, 4], [1, 2, 4], [3, 5], [4], [0]]
关注者
0
被浏览
71
1 个回答
-
您可以用来
itertools.zip_longest
对列表中的顺序元素对启用迭代,并enumerate
跟踪序列未增加的索引值,以便将相应的切片附加到输出列表中。from itertools import zip_longest nums = [1, 4, 1, 2, 4, 3, 5, 4, 0] results = [] start = 0 for i, (a, b) in enumerate(zip_longest(nums, nums[1:])): if b is None or b <= a: results.append(nums[start:i+1]) start = i + 1 print(results) # [[1, 4], [1, 2, 4], [3, 5], [4], [0]]