假设:
[[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]
或类似的东西。一个复杂的嵌套列表。
我怎样才能返回:
'ABCD' or ['ABCD']
由于int
辅助函数,sum
的递归函数很简单,但我无法想象如何使用str
执行此操作。
答案 0 :(得分:1)
这是一个返回单个字符串的递归方法
def joinValues(i):
if isinstance(i, list):
return ''.join(joinValues(j) for j in i)
else:
return i
>>> l = [[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]]]]
>>> joinValues(l)
'ABCD'
答案 1 :(得分:1)
您可以使用compiler.ast
模块中的flatten
功能展平嵌套列表,然后使用join()
加入角色:
>>> l=[[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]]]]
>>> from compiler.ast import flatten
>>> flatten(l)
['A', 'B', 'C', 'D']
>>> ''.join(flatten(l))
'ABCD'
注意如注释中所述,此函数已从python3中删除,而您可以在递归函数中使用itertools.chain
!或者您可以通过更多种方式查看duplicated question answers!