繁体   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