Python带有str项的嵌套列表的总和

时间:2015-03-03 19:42:04

标签: python string sum nested-lists

假设:

[[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]

或类似的东西。一个复杂的嵌套列表。

我怎样才能返回:

'ABCD' or ['ABCD']

由于int辅助函数,sum的递归函数很简单,但我无法想象如何使用str执行此操作。

2 个答案:

答案 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