![](/img/trans.png)
[英]Python Split list into sublists based on the first element in the sublists
[英]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.