2017-09-07 5 views
1

リストのリストをPythonを使用して単一の文字列に変換しようとしていますが、ループを使用したくありません。希望の結果。私はこのような出力が欲しい文字列のネストされたリストを1つの文字列にまとめる

#!/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それは完全にディプリカではありませんテ。彼は「崩壊」から「復帰する」ことを忘れてしまい、後に再割り当てし、ラムダの使い方を知らない。タイトルは誤解を招く。 – JulienD

+0

@JulienD私はそれを実現しました....それは今私の答えです。 –

答えて

2

なしがインプレースで動作するという意味での文字列操作の使用を誤解しているようです。文字列は不変なので、元の文字列はではなく、に変更されています。あなたの関数に値を返させ、戻り値を元の値に戻す必要があります。

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.' 

そのここ

は(あなたもそれを他の方法を行うことができますが、これは単に簡潔である)itertools.chainを使用してソリューションです私

+0

これは機能内で試してみましたが、うまくいきませんでした – James

+0

申し訳ありませんが、私の答えからアーティファクトを大量にコピーしていません。 –

関連する問題