我刚才问过如何在这里给出分隔符的字符串中制作一个子列表(以及更多的子列表)列表。 How to process a string into layer of sublists
现在,我需要加入他们,我不知道如何。我试着看看这里 Python : Recursively flatten a list 和 Flatten a list in python
但是,这些答案都不适用于我的情况,因为链将我的字符串(单项“列表”)拆分为字符,因此不能与“\ n”连接,而reduce不会连接str和list对象。< / p>
我可能需要在某些时候浏览子列表(及其子列表)。有没有办法迭代每个子级列表? (我可以把它作为一个单独的问题,一步一步......但只是想知道这个过程是否有意义,还是我应该尝试一个全新的方法。我认为逻辑上这是最有意义的,我只是有导航它的麻烦。)
感谢。
答案 0 :(得分:3)
除非你另有说法,否则我会假设我在评论中说的是正确的。
从您关联的帖子中,您有:
import collections
def flatten(l):
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
for sub in flatten(el):
yield sub
else:
yield el
到recursively flatten an irregular list of lists,
def go(it):
for x in it:
if x == 'b':
yield [x] + list(go(it))
else:
yield x
if x == 'c':
break
到create that irregular list of lists from an iterator。
go
的倒数仅为flatten(output_of_go)
,因此go(iter(string))
的倒数为''.join(flatten(output_of_go))
。你可以看到这个测试代码:
lst = "aaabaabacabaacaca"
assert ''.join(flatten(go(iter(lst)))) == lst