2017-09-07 8 views
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

@ Martins Pieters 완전히 복제본이 아닙니다. 테. 그는'붕괴 '에서'돌아 오는 '것을 잊어 버렸고, 뒤에서 재 할당하고, 람다 사용법을 모른다. 제목이 오해의 소지가 있습니다. – 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

미안하지만, 내 대답에서 유물을 뻔뻔스럽게 복사하지 마십시오. –