"" .join(list)如果list包含python中的嵌套列表?

时间:2012-03-07 18:43:03

标签: python

我知道"".join(list)将列表转换为字符串,但是如果该列表包含嵌套列表会怎么样?当我尝试它时,由于意外的列表类型返回TypeError。我猜测错误处理是可能的,但到目前为止,我的尝试都没有结果。

3 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情:

''.join(''.join(inner) for inner in outer)

这应该有效,如果外部列表中包含字符串和列表''.join(myString) -> myString,则不会有太多麻烦。

答案 1 :(得分:5)

好吧,如果列表是嵌套的,只需事先flatten

>>> import itertools
>>> lst = [['a', 'b'], ['c', 'd']]
>>> ''.join(itertools.chain(*lst))
'abcd'

答案 2 :(得分:0)

你也可以尝试这个片段:

from collections import Iterable

ellipsis = type('',(),{'__str__' : lambda self:'...'})()

def flatten(collection,stack = None):
    if not stack: stack = set()
    if id(collection) in stack:
        yield ellipsis
        return
    for item in collection:
        if isinstance(item,Iterable):
            stack.add(id(collection))
            for subitem in flatten(item,stack):
                yield subitem
            stack.remove(id(collection))
        else: yield item

x = [1,2,[3,4,[5],[[6]],7]]
x.append(x)

>>> print(', '.join(map(str,flatten(x))))
1, 2, 3, 4, 5, 6, 7, ...