作为后处理步骤,您可以使用
itertools.groupby
在递归函数中:
from itertools import groupby
data = ['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'q', 'u', 'e', 'r', 'y', ' ', 'i', 't', 'e', 'm', ' ', '1', 't', 'h',
'i', 's',
' ', 'i', 's', ' ', 'q', 'u', 'e', 'r', 'y', ' ', 'i', 't', 'e', 'm', ' ', '2',
['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 's', 'u', 'b', 'q', 'u', 'e', 'r', 'y'], 't', 'h', 'i', 's',
' ', 'i', 's', ' ', 'q', 'u', 'e', 'r', 'y', ' ', 'i', 't', 'e', 'm', ' ', '3']
def join(lst):
for is_list, group in groupby(lst, key=lambda x: isinstance(x, list)):
if is_list:
yield from (list(join(value)) for value in group)
else:
yield ''.join(group)
result = list(join(data))
print(result)
输出
['this is query item 1this is query item 2', ['this is a subquery'], 'this is query item 3']
这将为列表和字符创建组,如果组是字符之一,请使用内置的
join
函数,否则递归调用join函数。