Python 包含 str 项的嵌套列表的总和
Python Sum of nested list with str items
鉴于:
[[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]
或类似的东西。复杂的嵌套列表。
我怎样才能 return:
'ABCD' or ['ABCD']
由于 sum
辅助函数,int
的递归函数非常简单,但我无法想象如何使用 str
.
这是return单个字符串
的递归方法
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'
您可以使用 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!
鉴于:
[[[[[[[[['A']]]]],[[[[['B']]]]],['C'],[[[[['D']]]]]]
或类似的东西。复杂的嵌套列表。
我怎样才能 return:
'ABCD' or ['ABCD']
由于 sum
辅助函数,int
的递归函数非常简单,但我无法想象如何使用 str
.
这是return单个字符串
的递归方法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'
您可以使用 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!