파이썬에서 문자열을 항목별로 연결


13

이것은 에서 골프를하기위한 질문입니다 .

두 개의 문자열 목록이 있고 각 목록에서 해당 항목을 연결하려고한다고 가정하십시오. 예를 들어 a=list("abcd")b=list("1234")로 계산 ["a1","b2","c3","d4"]합니다.

이것은 배열 기반 프로그래밍 언어에서 사소한 일이며 일반적으로 작업이 목록에 멤버 단위로 적용됩니다. 예를 들어 내 골프 언어 Pip 에서 코드는 간단 a.b합니다. 그러나 파이썬에서는 그렇게 쉽지 않습니다.

파이썬 방식은 아마도 zip목록 이해 (25 문자) 를 사용 하는 것입니다 .

[x+y for x,y in zip(a,b)]

또 다른 방법은 map람다 함수 (23)입니다.

map(lambda x,y:x+y,a,b)

다음은 내가 생각해 낸 가장 짧은 것입니다 (21).

map("".join,zip(a,b))

더 짧은 방법이 있습니까?

리스트의 길이가 같고 어떤 종류의 반복 가능한 것이 필요하다고 가정합니다 (따라서 map파이썬 3 에서는 객체가 좋습니다).


의 중복 가능성 파이썬에서 골프 팁
마스트

@ 마스트 팁 목록에이 특정 질문에 대한 답변이 포함되어 있습니까?
마틴 엔더

@ MartinBüttner 그렇지 않다면 그렇게해야합니다. 혼란을 방지하고 모든 속임수 등을 유지합니다.
Mast

답변:


14

20 자

map(str.__add__,a,b)

익명 함수 대신 문자열에서 __add__호출되는 내장 메소드 문자열 추가 메소드 를 사용 +합니다 lambda x,y:x+y.


알다시피, 나는 생각 str.__add__했지만 어떤 이유로 그것이 더 짧은 지 확인하지 않았습니다.
DLosc

1
@DLosc이 답변의 진정한 장점은 map여러 iterable과 함께 사용 하는 것입니다. 그것 없이는 더 짧지 않을 것입니다. 참고 코드에서 당신은 일부에 액세스해야하는 경우 것이 __*__방법이 할 짧아을 할 수 from operator import *후 사용 map(add,a,b).
Bakuriu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.