파이썬에서 한 리스트의 각 요소가 다른 리스트에 포함되어 있는지 확인하고, 그 결과를 0과 1로 표현하는 '마스킹(masking)' 작업이 필요할 때가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)을 활용하면 단 한 줄의 코드로 간결하게 처리할 수 있습니다.
예제 코드
아래는 다른 리스트의 값을 기준으로 리스트를 마스킹하는 예시입니다.
my_list = [5, 6, 1, 9, 11, 0, 4]
print("The list is :")
print(my_list)
search_list = [2, 10, 6, 3, 9]
result = [1 if element in search_list else 0 for element in my_list]
print("The result is :")
print(result)출력 결과
The list is : [5, 6, 1, 9, 11, 0, 4] The result is : [0, 1, 0, 1, 0, 0, 0]
코드 설명
my_list라는 리스트를 정의하고 콘솔에 출력합니다. 이 리스트가 마스킹의 대상이 됩니다.search_list라는 또 다른 리스트를 정의합니다. 이 리스트는 마스킹 여부를 판단하는 기준값들을 담고 있습니다.리스트 컴프리헨션을 사용해
my_list의 각 요소를 순회하면서, 해당 요소가search_list에 존재하면 1, 존재하지 않으면 0을 생성합니다.마스킹된 결과를 변수
result에 할당합니다.최종 결과를 콘솔에 출력합니다. 위 예제에서는 6과 9만
search_list에 포함되어 있으므로 [0, 1, 0, 1, 0, 0, 0]이 출력됩니다.
핵심 포인트
이 코드의 핵심은 조건 표현식(삼항 연산자)인 1 if element in search_list else 0 부분입니다. 각 요소가 검색 리스트에 속하는지를 판단해 1 또는 0을 만들어내는 것이 바로 마스킹의 원리입니다. 이러한 기법은 데이터 필터링, 불린 마스크 생성 등 다양한 데이터 처리 작업에서 유용하게 활용됩니다.