리스트의 모든 요소에 동일한 값을 연결해야 하는 경우가 종종 있습니다. 예를 들어 요일 이름 목록이 있고, 각 항목 뒤에 'day'라는 단어를 접미사처럼 붙이고 싶은 상황이 그렇습니다. 이번 글에서는 이러한 작업을 Python에서 처리하는 대표적인 두 가지 방법을 소개합니다.
방법 1: itertools.repeat 활용
itertools 모듈의 repeat() 메서드를 사용하면 지정한 값을 무한히 반복 생성할 수 있습니다. 이를 zip() 함수와 함께 사용하면, zip이 가장 짧은 이터러블(여기서는 원본 리스트)의 길이에 맞춰 자동으로 멈추기 때문에 리스트의 각 요소와 동일한 값이 깔끔하게 짝지어집니다.
예제 코드
from itertools import repeat
listA = ['Sun', 'Mon', 'Tues']
val = 'day'
print("The Given list : ", listA)
print("Value to be attached : ", val)
# zip()과 itertools.repeat() 조합
res = list(zip(listA, repeat(val)))
print("List with associated values:\n", res)실행 결과
The Given list : ['Sun', 'Mon', 'Tues']
Value to be attached : day
List with associated values:
[('Sun', 'day'), ('Mon', 'day'), ('Tues', 'day')]방법 2: lambda와 map 활용
lambda 함수를 사용하면 리스트의 각 요소를 순회하면서 해당 요소와 주어진 값을 튜플 형태로 묶을 수 있습니다. 여기에 map() 함수를 결합하면 리스트의 모든 요소가 빠짐없이 처리되어, 각 항목이 지정된 값과 한 번씩 정확히 연결됩니다.
예제 코드
listA = ['Sun', 'Mon', 'Tues']
val = 'day'
print("The Given list : ", listA)
print("Value to be attached : ", val)
# map()과 lambda 조합
res = list(map(lambda i: (i, val), listA))
print("List with associated values:\n", res)실행 결과
The Given list : ['Sun', 'Mon', 'Tues']
Value to be attached : day
List with associated values:
[('Sun', 'day'), ('Mon', 'day'), ('Tues', 'day')]두 방법 비교 및 정리
두 방법 모두 동일한 결과를 반환하지만, 상황에 따라 선택 기준이 달라질 수 있습니다.
- itertools.repeat + zip: 반복되는 값이 고정되어 있을 때 가독성이 좋고, 대용량 데이터에서도 메모리 효율이 우수합니다.
- lambda + map: 각 요소에 적용할 변환 로직을 유연하게 커스터마이징할 수 있어 확장성이 뛰어납니다.
만약 결과를 튜플이 아닌 문자열 형태(예: 'Sunday')로 얻고 싶다면, 리스트 컴프리헨션을 사용해 [item + val for item in listA]처럼 간단히 처리할 수도 있습니다. 상황에 맞는 방법을 선택해 활용해 보시기 바랍니다.