Skip to main content
 首页 » 编程设计

python之将整数列表分解为递增序列列表

2025年05月04日9exmyth

假设列表中没有连续的整数。

我已经尝试使用 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]]