簡體   English   中英

如何首先基於初始列表的單個元素將列表拆分為子列表,然后僅在 python 中將列表的連續部分拆分為子列表?

[英]How to split a list into sublists based on single elements of the initial list first and then contiguous portions of the list simply in python?

過去我一直在尋找如何做到這一點,但似乎找不到任何可以回答我的問題的東西,或者它的想法和代碼太復雜,我無法理解為一個完整的初學者。 所以基本上這是我必須做的任務:

寫一個 function all sublists(lst),對於一個列表 lst,它返回一個 lst 的所有子列表的列表。 子列表是包含原始的連續部分的列表,即包含來自原始的零個或多個連續元素。

例如,對於列表 [1, 2, 3],結果應該是

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

我開始做的是創建一個包含所有數字的完整列表,然后將其拆分。 但是我不能使用拆分 function 因為它是一個字符串並且不知道任何正確拼接它的正確方法。

使用itertools.combinations

from itertools import combinations

l = [1, 2, 3]
final = []
for i in range(len(l)+1):
  final += list(combinations(l,i))

print(final)

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

這是一個 function 使用雙循環找到您想要的結果:

def get_contiguous_sublists(lst):
    out = [[]]
    len_lst = len(lst) + 1
    for length in range(1, len_lst):
        for i in range(len_lst - length):
            out += [lst[i : i + length]]
    return out

Output:

>>> get_contiguous_sublists([1,2,3])
[[], [1], [2], [3], [1, 2], [2, 3], [1, 2, 3]]


>>> get_contiguous_sublists([1,2,3,4])
[[], [1], [2], [3], [4], [1, 2], [2, 3], [3, 4], [1, 2, 3], [2, 3, 4], [1, 2, 3, 4]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM