2024-04-25 09:22:27 发布
网友
我有一个整数数组[1, 2, 3],我需要返回这个数组的所有相邻子数组的可能组合。
[1, 2, 3]
[[1],[2],[3],[1,2],[2,3],[1,2,3]]
我怎么用python处理呢?一种方法是有两个循环和数组本身,但应该有更好的方法。
def kwindow(L, k): for i in range(len(L)-k+1): yield L[i:i+k] def getAllWindows(L): for w in range(1, len(L)+1): yield from kwindow(L, w)
输出:
In [39]: for i in getAllWindows([1,2,3]): print(i) [1] [2] [3] [1, 2] [2, 3] [1, 2, 3]
简化检查员的解决方案:
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)
单行解决方案(我不知道什么对你来说是“更好的方式”)
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]]
输出:
简化检查员的解决方案:
以及一个完全不使用循环的解决方案:
单行解决方案(我不知道什么对你来说是“更好的方式”)
你得到了
相关问题 更多 >
编程相关推荐