Python 寻找次级清单的具体成果

Python 寻找次级清单的具体成果,python,Python,我试图找到一种方法,将给定列表转换为多个子列表 这是可行的,但是,接下来我想让列表仅在彼此相邻时输出。例如,现在['a'、'b'、'c']输出: []、['a']、['b']、['c']、['a',b']、['a','c']等等,我不想要['a','c'],因为它们不应该挨着走。谁能给我指出正确的方向吗 def list_thing(theList): initial = [] lists = [initial] for i in range(len(theList)):

我试图找到一种方法,将给定列表转换为多个子列表

这是可行的,但是,接下来我想让列表仅在彼此相邻时输出。例如,现在
['a'、'b'、'c']
输出:

[]、['a']、['b']、['c']、['a',b']、['a','c']
等等,我不想要
['a','c']
,因为它们不应该挨着走。谁能给我指出正确的方向吗

def list_thing(theList):
    initial = []
    lists = [initial]
    for i in range(len(theList)):
        original = lists[:]
        new = theList[i]
        for j in range(len(output)):
            lists[j] = lists[j] + [new]
        lists = lists + output
    return lists
编辑:为了澄清,正如我被要求的那样,我还希望
['a','b','c']
,因为它们是一个可能的结果

只要进一步解释一下,
['a'、'b'、'c'、'd']
就会给出像
['a'、'b']、['b'、'c']、['c'、'd']、['a'、'b'、'c'、'd']
这样的组合,这些答案是可以接受的


虽然
['a'、'b'、'c']['a'、'c']
不会,因为它们不是单独相邻的,也不是较大字符串的一部分。

我认为这实现了您的目标:

>>> def lister(some_list):
...   result = [[]]
...   result.extend([i] for i in some_list)
...   result.extend(map(list, zip(some_list, some_list[1:])))
...   result.append(some_list)
...   return result
... 
>>> lister(['a', 'b', 'c', 'd'])
[[], ['a'], ['b'], ['c'], ['d'], ['a', 'b'], ['b', 'c'], ['c', 'd'], ['a', 'b', 'c', 'd']]

['a'、'b'、'c']
本身呢?如果不是,是因为您不想要列表本身,还是因为您只想要最多包含两个元素的列表?它们不应该相邻是什么意思?是因为a和c在字母表中不是连续的吗?听起来你只是想从列表中分一杯羹。现在,尝试计算所有可能的开始/结束索引。这几乎就在那里,但需要放在方括号中,您是否有一个链接,在那里您学会了如何做这件事,或者是有经验?您可以在这里了解有关成对迭代的更多信息:。这并不完全是您所要求的,因为您还需要单个元素,但这是我在这里编写的函数中第三行的抽象。更改为方括号(列表)而不是括号(元组)只是将
list
映射到
zip
的结果。