리스트에서 특정 문자만 남기고 나머지 모든 문자를 다른 문자로 바꿔야 하는 경우, 리스트 컴프리헨션(list comprehension)과 '==' 비교 연산자를 사용하면 코드 한 줄로 간단하게 처리할 수 있습니다.
예제 코드
다음은 실제 동작 과정을 보여주는 예제입니다.
my_list = ['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'H', 'P']
print("The list is :")
print(my_list)
replace_char = '$'
retain_char = 'P'
my_result = [element if element == retain_char else replace_char for element in my_list]
print("The result is :")
print(my_result)실행 결과
The list is : ['P', 'Y', 'T', 'H', 'O', 'N', 'P', 'H', 'P'] The result is : ['P', '$', '$', '$', '$', '$', 'P', '$', 'P']
코드 설명
- 문자들로 구성된 리스트를 정의하고 콘솔에 출력합니다.
- 리스트에 저장된 문자 중 유지할 문자(retain_char)와 대체할 문자(replace_char)를 각각 정의합니다.
- 리스트 컴프리헨션을 사용해 리스트를 순회하면서, 현재 요소가 유지할 문자와 같으면 그대로 새 리스트에 추가하고, 그렇지 않으면 지정된 대체 문자로 바꿉니다.
- 조건에 따라 변환된 문자들은 새로운 리스트로 저장되어 변수에 할당됩니다.
- 최종 결과 리스트가 콘솔에 출력됩니다.
핵심 문법: 조건부 표현식(Conditional Expression)
이 예제의 핵심은 [element if element == retain_char else replace_char for element in my_list] 구문입니다. 이는 일반적인 for 반복문과 if-else 조건문을 한 줄로 압축한 형태로, 아래 코드와 완전히 동일하게 동작합니다.
my_result = []
for element in my_list:
if element == retain_char:
my_result.append(element)
else:
my_result.append(replace_char)리스트 컴프리헨션은 반복문보다 코드가 간결할 뿐만 아니라 실행 속도 면에서도 유리하기 때문에, 이처럼 리스트의 요소를 조건에 따라 변환하는 작업에 널리 활용됩니다.