当前位置:  开发笔记 > 编程语言 > 正文

列出所有连续的子阵列

如何解决《列出所有连续的子阵列》经验,为你挑选了2个好方法。

我有一个[1, 2, 3]整数数组,我需要返回此数组的连续子数组的所有可能组合.

[[1],[2],[3],[1,2],[2,3],[1,2,3]]

我怎么能用python处理它?一种方法是有2个循环和数组本身但应该有更好的方法.



1> Jose Ricardo..:

一线解决方案(我不知道你的"更好的方式"是什么意思)

L = [1,2,3]
[L[i:i+j] for i in range(0,len(L)) for j in range(1,len(L)-i+1)]

L=[1,2,3,4]
[L[i:i+j] for i in range(0,len(L)) for j in range(1,len(L)-i+1)]

你得到,

[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]

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



2> Scott Hunter..:

简化Inspector的解决方案:

def getAllWindows(L):
    for w in range(1, len(L)+1):
        for i in range(len(L)-w+1):
            yield L[i:i+w]

并且根本没有使用循环的解决方案:

def allSubArrays(L,L2=None):
    if L2==None:
        L2 = L[:-1]
    if L==[]:
        if L2==[]:
            return []
        return allSubArrays(L2,L2[:-1])
    return [L]+allSubArrays(L[1:],L2)

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有