pythonic方式的子数组数量

时间:2021-07-03 17:16:45

标签: python

我有这个数组:

[1,2,3,4]

并且我想要除了单个元素之外的所有子数组,在这种情况下:

 [1,2],[1,2,3],[1,2,3,4],[2,3],[2,3,4],[3,4]. 

所以我实现了这段代码:

def nSub(nums:list):
    """
    type nums: list
    """
    l_nums = len(nums)
    p = 2
    for i in range(l_nums):
        for j in range(p,l_nums+1): 
            print(nums[i:j])
        p += 1

nSub([1,2,3,4])

但是虽然它有效,但也许还有其他方法可以实现这一点,所以我有一个问题:有没有pythonic的方法来做到这一点?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

简单的列表理解应该可以完成这项工作:

arr = [1,2,3,4]

[arr[n1:n2] 
 for n1 in range(0, len(arr) + 1)
 for n2 in range(n1 + 2, len(arr) + 1)]

输出:

[[1, 2], [1, 2, 3], [1, 2, 3, 4], [2, 3], [2, 3, 4], [3, 4]]
相关问题