HOWTO · Python

파이썬에서 리스트를 문자열로 변환하는 방법

이 튜토리얼은 파이썬에서 리스트를 문자열로 변환하는 방법을 보여 줍니다.

이 페이지의 내용

리스트를 하나의 문자열로 만들려면 구분자에 join()를 호출하고 문자열 리스트를 전달하세요. 구분자는 인접한 항목 사이에 들어가며, 첫 항목 앞이나 마지막 항목 뒤에는 추가되지 않습니다. 숫자나 여러 타입이 섞인 값은 각 항목을 먼저 문자열로 변환하세요. 최종 문자열을 만들 때는 join()를 사용하고, 컴프리헨션이나 map(), 또는 반복문으로 항목을 준비하면 됩니다.

문자열 리스트를 join()로 변환

다음 예제를 실행하세요:

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

words = ["Hello", "World", "from", "Python"]
print("".join(words))
print(" ".join(words))

이 예제에서는 구분자를 두 가지로 사용합니다. 빈 구분자는 문자열을 바로 이어 붙이고, 공백 구분자는 각 항목 사이에 공백 하나를 넣습니다. ", ", "-", " | "처럼 어떤 문자열이든 구분자로 사용할 수 있습니다. 항목 자체는 바뀌지 않습니다.

join()는 각 요소가 문자열인 이터러블을 받습니다. 튜플이나 다른 문자열 이터러블에도 사용할 수 있지만, 값이 이미 모여 있을 때는 리스트를 흔히 사용합니다. 항목이 정수나 다른 비문자열 값이면 컬렉션에 join()를 호출할 때 TypeError가 발생합니다. join()가 자동으로 변환해 줄 것이라고 기대하지 말고, 결합하기 전에 해당 값을 변환하세요.

결합하기 전에 비문자열 항목 변환

각 값의 문자열 표현을 얻으려면 str()를 사용한 다음, 변환된 문자열을 결합하세요:

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

values = [12, 7, 31]
result = ", ".join(str(value) for value in values)
print(result)

str(value) for value in values 표현식은 제너레이터 표현식으로, 변환된 문자열을 join()에 전달합니다. 변환된 항목을 나중에 재사용하기 위해 리스트로 만들어야 한다면 리스트 컴프리헨션을 사용하세요:

values = [12, 7, 31]
strings = [str(value) for value in values]
result = ", ".join(strings)
print(result)

str()는 사람이 읽을 수 있는 표현을 만들며, 구조화된 데이터를 위한 범용 직렬화 형식은 아닙니다. 예를 들어 중첩 리스트나 딕셔너리를 이렇게 변환해도 데이터를 저장하고 다시 복원할 수 있는 신뢰할 만한 형식이 만들어지지 않습니다. 데이터의 구조를 유지한 채 저장하거나 교환해야 한다면 직렬화를 위해 설계된 형식을 사용하세요.

리스트 컴프리헨션과 map() 중 선택

컴프리헨션은 각 항목에 적용하는 변환이나 다른 처리를 결과를 만드는 부분과 함께 보여 줍니다. 같은 표현식에서 값을 변경하거나 필터링하거나 변환 과정을 설명해야 할 때 적합합니다. 앞 절의 제너레이터 형식은 별도의 리스트를 먼저 만들지 않고 join()에 값을 전달합니다. 재사용할 리스트가 필요하면 대괄호를 사용하세요.

map()는 각 항목에 함수를 적용하고 이터레이터를 반환합니다. 다른 로직 없이 바로 변환할 때는 간결하게 쓸 수 있습니다:

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

values = [12, 7, 31]
result = ", ".join(map(str, values))
print(result)

두 방법 모두 join()가 결과를 만들기 전에 각 숫자를 str()로 변환합니다. 독자가 변환 과정을 가장 쉽게 이해할 수 있는 형식을 선택하세요. 어느 방법도 원래 리스트를 변경하지 않습니다. 사용자 지정 변환이 필요하면 모든 항목에 대해 문자열을 반환하는 함수로 str을 바꾸세요.

for 반복문으로 문자열 만들기

각 항목을 추가하기 전에 조건에 따라 처리하거나 여러 단계를 거쳐야 한다면 반복문이 유용합니다. 단순한 결합에는 join()를 사용하세요. 반복문에서 문자열을 계속 이어 붙이면 결과가 커질수록 복사 작업이 더 늘어날 수 있습니다. 반복문이 필요하다면 조각을 모은 다음 마지막에 한 번 결합하세요:

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

words = ["Python", "is", "useful"]
parts = []
for word in words:
    parts.append(word)
result = " ".join(parts)
print(result)

공백 배치는 여전히 구분자가 제어하므로, 이렇게 하면 끝에 공백을 붙였다가 제거할 필요가 없습니다. 모든 조각이 문자열이라면 반복문 안에서 특정 항목을 건너뛰거나 각 항목을 형식에 맞게 바꾸는 등의 로직을 추가할 수도 있습니다. 정수 리스트라면 정수 자체가 아니라 str(value)를 추가하세요.

일반적인 경우에는 구분자에 join()를 호출하세요. 바로 이어 붙이려면 "".join(words)를, 공백으로 구분하려면 " ".join(words)를 사용합니다. 항목이 이미 문자열이 아니라면 먼저 컴프리헨션이나 map()로 변환하세요. 항목별 로직을 더 명확하게 표현할 수 있을 때는 반복문을 사용하고, 여러 조각을 합칠 때는 한 번에 결합하는 편이 좋습니다.