将嵌套的字符串列表展平为单个字符串

时间:2017-09-07 11:24:54

标签: python string list nested-lists

我正在尝试使用python将列表列表转换为单个字符串,并且我不想使用任何我想在Python中使用lambda但不能获得所需结果的循环。 这是我的代码:

#!/usr/bin/python
import sys
import math
from functools import reduce
def collapse(L):
    list = lambda L: [item for sublist in L for item in sublist]
    #sum(L, [])
    #print('"',*list,sep=' ')
    #whole_string = ''.join(list).replace(' ')
l=[ ["I","am"], ["trying", "to", "convert"], ["listoflist", "intoastring."]]
collapse(l)
print(*l,sep='')

我想要这样的输出"我正在尝试将listoflist转换为字符串。"

2 个答案:

答案 0 :(得分:2)

看起来你错误地理解了字符串操作的使用,因为它们的 none 就地工作。原始字符串已修改,因为字符串是不可变的。您需要让函数返回一个值,然后将返回值赋回原始值。

以下是使用itertools.chain的解决方案(你也可以采用其他方式,这只是简洁的):

from itertools import chain

def collapse(lst):
    return ' ' .join(chain.from_iterable(lst))

out = collapse([["I","am"], ["trying", "to", "convert"], ["listoflist", "intoastring."]])
print(out) 
'I am trying to convert listoflist intoastring.'

答案 1 :(得分:-2)

试试这个:

>>> l=[ ["I","am"], ["trying", "to", "convert"], ["listoflist", "intoastring."]]
>>> 
>>> ' '.join([data for ele in l for data in ele])
'I am trying to convert listoflist intoastring.'

它为我工作