2017-09-07 201 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

對不起,但不要公然從我的答案複製人工製品。 –

相關問題