2011-02-27 5 views
1

저는 Python을 배우고 있습니다. 각 요소는 동일한 방법을에서 약간 변형 한 상태에서, 목록에있는 모든 요소를 ​​연결하여 하나의 문자열 :Python에서이 목록 작업을 수행하는 최단/최선의 방법

  • 입력 : : 목록 : 예를 들어, ['a', 'b', 'c']
  • 출력 나는 다음과 같은 작업을 수행하고 싶습니다 모든 요소.

예를 들어, 목록의 각 요소에 "-temp"을 추가하고 싶습니다. 그래서, 출력은 다음과 같습니다

나오긴의

"a-temp b-temp c-temp"

, 나는 C/C++ 스타일을 작성할 수 있습니다. 하지만 파이썬에서 좀 더 우아하고 흥미로운 방식이 있습니까?

lst = ['a', 'b', 'c'] 
print ' '.join(['%s-temp' % item for item in lst]) 

답변

8
>>> ' '.join(x+'-temp' for x in ['a', 'b', 'c']) 
'a-temp b-temp c-temp' 
+0

나는 당신이 [괄호]와 함께 당신의 목록 이해력을 둘러 쌀 필요가 있다고 믿는다. –

+4

오직 이해가 유일한 인자가 아니고 []를 사용하면리스트를 만든다.()는 iterator를 만든다.)은 문법적으로 –

+0

을 호출해야만 필요합니다. 감사합니다. @ 단은 그 사실을 인식하지 못했습니다. –

3

목록 함축은 당신의 친구입니다.


거의 :

'-temp '.join(['a','b','c'])+'-temp' 
+0

'방금 발전기 이해를 사용하고 가입 전화에 그것을 전달할 수 있기 때문에 []'불필요하다. – Amber

1
'-temp'.join(list) 

나는 그것을 할 것입니다 생각 :

+0

Nope. 마지막 것 이후에 아무것도 넣지 않을 것입니다. – tangentstorm

+0

''a-tempb-tempc ''가 될''-temp '.join (['a ','b ','c '])'이 없습니다. –

+0

수정을 참조하십시오. –

3

사용 지능형리스트는 액세스하고 목록의 각 요소를 사용할 필요가있을 때. 예 : 여기

l = ['a', 'b', 'c'] 
' '.join([element + '-temp' for element in l]) 
+0

오류, 왜 downvote? 누군가는 그냥 가서 모두를 버렸습니다. 뭐라 구요? –

+0

음, 방금 모든 것을 백업했기 때문에 그것은 비생산적이었습니다. 즐기십시오 :) – senderle

+1

+1 downvote를 취소하려면, 이것은 정답입니다. (비록 []]는 불필요합니다.) – Amber

3

당신은 이동 :

새 목록을 생성, 문자열 보간 thelist의 요소를 매핑하는 지능형리스트를 포함
s = " ".join(["%s-temp" % s for s in thelist]) 

. 그런 다음 마지막 문자열을 얻기 위해 중간에 공백을 넣습니다.

+0

결과는 OP와 정확히 일치하는 'a-temp b-temp c-temp'입니다. 당신의 downvote를 설명하십시오. – Keith

+0

+1 downvote를 취소하려면 정답입니다. (이 경우'[] '는 필요하지 않지만.) – Amber

+0

@Amber 알아요.하지만 OP가 방금 배웠기 때문에 그들을 포함 시키기로 결정 했으므로리스트의 이해력을 명확하게하고 싶었습니다. 그런 식으로 OP는 일반적인 목록 이해력도 배웁니다. – Keith

0

당신은 아래 map 기능을 사용할 수 있습니다

l = ['a','b','c'] 
map((lambda s: s + '-temp'), l) 
+0

필자는 list comprehension이 map/filter/reduce 등을 사용하지 않고 선호하는 pythonic 방법이라고 믿고있다. –

+0

@Josh - 당신이 옳다면,'filter'와'map'보다 더 잘 이해할 수 있습니다. 그러나'reduce'는 독해력과 교차하지 않는 독특한 기능을 가지고 있습니다. – Amber

+0

@ Josh : 알겠습니다, 감사합니다. – Thuy

관련 문제