Python에서 튜플(tuple)을 리스트(list)로 변환하면서 각 요소 뒤에 특정 문자열을 삽입해야 하는 경우가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)을 활용하면 코드 한 줄로 간단하게 처리할 수 있습니다.
예제 코드
my_tup = (56, 78, 91, 32, 45, 11, 23)
print("The tuple is : ")
print(my_tup)
K = "Hi"
my_result = [elem for sub in my_tup for elem in (sub, K)]
print("The tuple after conversion with K is : ")
print(my_result)실행 결과
The tuple is : (56, 78, 91, 32, 45, 11, 23) The tuple after conversion with K is : [56, 'Hi', 78, 'Hi', 91, 'Hi', 32, 'Hi', 45, 'Hi', 11, 'Hi', 23, 'Hi']
코드 설명
먼저 숫자 값들로 이루어진 튜플을 정의하고, 콘솔에 출력하여 확인합니다.
각 요소 뒤에 추가할 문자열 값
K("Hi")를 정의합니다.리스트 컴프리헨션을 사용하여 튜플의 각 요소를 순회하면서, 원래 요소와 문자열 K를 번갈아 배치한 새로운 리스트를 생성합니다.
변환된 결과는 변수
my_result에 할당됩니다.최종 결과가 콘솔에 출력되며, 모든 요소 사이사이에 'Hi'가 추가된 리스트를 확인할 수 있습니다.
동작 원리
이 프로그램의 핵심은 다음 코드입니다.
[elem for sub in my_tup for elem in (sub, K)]
중첩된 반복 구조를 활용한 방식입니다. 바깥쪽 반복문이 튜플의 각 요소(sub)를 하나씩 가져오면, 안쪽 반복문은 해당 요소와 문자열 K를 묶은 튜플 (sub, K)를 차례대로 순회하며 새로운 리스트에 요소를 추가합니다. 그 결과 원본 요소와 지정한 문자열이 교차로 배치된 리스트가 완성됩니다.
이 방법은 별도의 반복문이나 임시 리스트 없이 선언형 스타일로 처리할 수 있어 가독성이 좋고 코드가 간결하다는 장점이 있습니다. 또한 원본 튜플은 변경되지 않으므로 불변(immutable) 자료형인 튜플의 특성도 그대로 유지됩니다.