파이썬으로 프로그래밍을 하다 보면 리스트의 모든 요소 앞에 특정 문자열을 붙여야 하는 경우가 자주 발생합니다. 예를 들어, "Tutorials_Point"라는 문자열과 "1", "2" 등 여러 요소를 담고 있는 리스트가 주어졌을 때, 각 요소 앞에 Tutorials_Point를 붙여 Tutorials_Point1, Tutorials_Point2 형태로 만드는 작업입니다.
이 글에서는 이러한 작업을 수행할 수 있는 다양한 방법을 소개합니다.
방법 1: 리스트 컴프리헨션과 str.format() 활용
가장 널리 사용되는 방식은 리스트 컴프리헨션(list comprehension) 안에서 str.format() 메서드를 호출하는 것입니다. 코드가 간결하고 가독성이 뛰어나 파이썬다운 방법이라 할 수 있습니다.
sample_list = [1, 2, 3]
print(['Tutorials_Point{0}'.format(i) for i in sample_list])출력 결과
['Tutorials_Point1', 'Tutorials_Point2', 'Tutorials_Point3']
리스트의 각 요소 i에 대해 'Tutorials_Point{0}' 템플릿에 값이 채워지면서 새로운 문자열이 생성됩니다. 원본 리스트는 그대로 유지되며 새로운 리스트가 반환된다는 점도 장점입니다.
방법 2: map() 함수와 format 조합
map() 함수를 사용하면 반복 로직을 더욱 함수형 스타일로 표현할 수 있습니다. 문자열 뒤에 {0} 플레이스홀더를 붙인 뒤, 해당 문자열의 format 메서드를 map()에 전달하면 됩니다.
sample_list = [1, 2, 3]
sample_str = 'Tutorials_Point'
sample_str += '{0}'
sample_list = ((map(sample_str.format, sample_list)))
print(sample_list)출력 결과
['Tutorials_Point1', 'Tutorials_Point2', 'Tutorials_Point3']
참고로 map()은 파이썬 3에서 맵 객체(map object)를 반환하므로, 리스트 형태로 결과가 필요하다면 list(map(...))처럼 감싸주는 것이 좋습니다.
방법 3: f-string(포맷 문자열) 활용
파이썬 3.6 이상을 사용한다면 f-string을 이용해 더욱 직관적으로 작성할 수 있습니다.
sample_list = [1, 2, 3]
prefix = 'Tutorials_Point'
print([f'{prefix}{i}' for i in sample_list])출력 결과
['Tutorials_Point1', 'Tutorials_Point2', 'Tutorials_Point3']
f-string은 변수를 중괄호 안에 그대로 넣을 수 있어 코드 의미가 명확하게 드러나며, 성능 면에서도 str.format()보다 일반적으로 빠릅니다.
마무리
세 가지 방법 모두 동일한 결과를 만들어냅니다. 상황에 따라 선택 기준을 정리하면 다음과 같습니다.
- 간결함과 가독성이 중요하다면 → 리스트 컴프리헨션 + f-string (방법 3)
- 함수형 스타일을 선호한다면 →
map()활용 (방법 2) - 구버전 파이썬 호환성이 필요하다면 →
str.format()(방법 1)
각자의 프로젝트 환경과 코딩 스타일에 맞는 방법을 선택해 활용하시기 바랍니다.