假设列表中没有连续的整数。
我已经尝试使用 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]]
请您参考如下方法:
你可以使用 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]]
