2017-09-07 120 views
1

我想将列表转换为使用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 intoastring。”

+0

@Martjin Pieters它不完全是一个复制品TE。他忘了从'collapse'返回,重新分配后,不知道如何使用lambda。标题具有误导性。 – JulienD

+0

@JulienD我意识到......这是我现在的答案。 –

回答

2

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

下面是使用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.' 
-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.' 

其工作我

+0

试过这里面的功能,但不工作 – James

+0

对不起,但不要公然从我的答案复制人工制品。 –

相关问题