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