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
的结果。