将整数列表分解为递增序列的列表

发布于 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 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以用来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]]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看