2012-04-26 2 views
1

단어 목록을 갖고 있으며 모두 쉼표와 공백으로 구분하여 인쇄하려고합니다. 따라서, 예를 들어, 목록 l이 항목 ['banana', 'apple', 'pear']를 포함하고 내가 지금 문자열 "banana, apple, pear"토큰으로 구분 된 요소로 문자열을 생성 할 때 타이핑 중복을 피하십시오.

을 제작해서 말할 수, 접근 나는 다음과 같은 문제가 해결하기 위해 사용합니다 :

s = "" 
s += l[0] 
for i in range(1, len(l)): 
    s += ", %s" % l[i] 

또는를 위와 매우 비슷한 것. 문제는 2 행의 추가 할당이 약간 복잡하고 중복되는 것으로 보이며 4 행과 거의 동일하므로 쉼표와 공백을 추가하는 것을 제외하고는 4 행과 동일합니다. 이것은 매우 작은 표현식에 대해서는별로 문제가되지 않지만 다소 큰 표정을 찾는 것은 짜증스럽고 불쾌한 결과를 가져올 수 있습니다. 예를 들어, l[0] 대신에 우리는 foo(bar(l[0]) + foobar(l[0]) + ...을 가질 수 있습니다. 이것은 단지 몇 줄 아래의 매우 유사한 문장을 반복해야한다고 생각하지 않습니다. 여분의 여분없이 원하는 결과를 얻는 더 좋은 방법이 있습니까? 여기에는 파이썬 표준 라이브러리에 대한 답변이나 여러 언어에서 사용할 수있는 일반적인 패턴이 포함될 수 있습니다.

답변

3

파이썬에서, 하나는 간단하게 작성합니다 예를 들어

s = ', '.join(l) 

:이 포함될 수

>>> l = ['banana', 'apple', 'pear'] 
>>> ', '.join(l) 
'banana, apple, pear' 

[...] 여러 언어에 걸쳐 사용될 수있는 일반적인 패턴. 다른 언어

, 나는 일반적으로 사용하는 패턴은 (의사 자바 여기에 표시)은 다음과 같다 :

for (int i = 0; i < l.length; i++) { 
    if (i != 0) { 
    s += ", "; 
    } 
    s += l[i]; 
} 

이 중복 할당을 방지 할 수 있습니다. 당신은 str.join을 사용할 수 있습니다 s = ', '.join(l)

+0

와우, 좋아, 그 파이썬 통화에 대해 매우 분명했습니다. 감사합니다. 10 분이 지나면 정답으로 설정하겠습니다. – eltommo

0

당신은 가입 사용할 수 있습니다

", ".join(l) 
관련 문제