-1

前段时间我问过如何从这里给定分隔符的字符串制作子列表(甚至更多子列表)。 如何将字符串处理成子列表层

现在,我需要将它们重新组合在一起,但我不确定如何。我试图在这里查看 Python:Recursively flatten a list and Flatten a list in python

但是,在我的情况下,这些答案都不起作用,因为链将我的字符串(单个项目“列表”)拆分为字符,因此无法与“\n”连接,并且 reduce 不会连接 str 和列表对象。

在某些时候,我可能需要遍历子列表(及其子列表)。有没有办法遍历子列表的每一级?(我可以把这个作为一个单独的问题,一次一步..但只是想知道这个过程是否有意义还是我应该尝试一种全新的方法。我认为从逻辑上讲这是最有意义的,我只是有导航它的麻烦。)

谢谢。

4

1 回答 1

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

递归地展平不规则的列表列表,以及

def go(it):
    for x in it:
        if x == 'b':
            yield [x] + list(go(it))
        else:
            yield x
            if x == 'c':
                break

从迭代器创建不规则的列表列表

gois的倒数就是isflatten(output_of_go)的倒数。您可以通过以下测试代码看到:go(iter(string))''.join(flatten(output_of_go))

lst = "aaabaabacabaacaca"
assert ''.join(flatten(go(iter(lst)))) == lst
于 2012-05-15T00:22:51.693 回答