假设列表中没有连续的整数。
我已经尝试过使用NumPy(np.diff)来解决每个元素之间的差异,但是还无法使用它来获得答案。下面是输入(第一行)和预期输出(第二行)的两个示例。
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跟踪序列未增加的索引值,以便将相应的切片附加到输出列表中。
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]]