리스트에서 회문(palindrome) 요소를 제거해야 할 때는 리스트 컴프리헨션(list comprehension)과 'not' 연산자를 함께 사용하면 간결하고 효율적으로 처리할 수 있습니다.
예제 코드
다음은 리스트에서 회문 요소를 제거하는 전체 예제입니다.
my_list = [56, 78, 12, 32, 4, 8, 9, 100, 11]
print("The list is : ")
print(my_list)
my_result = [elem for elem in my_list if int(str(elem)[::-1]) not in my_list]
print("The result is : ")
print(my_result)
실행 결과
The list is : [56, 78, 12, 32, 4, 8, 9, 100, 11] The result is : [56, 78, 12, 32, 100]
코드 설명
먼저 정수로 구성된 리스트를 정의하고 콘솔에 출력합니다.
리스트 컴프리헨션을 사용해 리스트의 각 요소를 순회하면서, 해당 요소를 문자열로 변환한 뒤 슬라이싱(
[::-1])으로 순서를 뒤집고, 다시 정수형으로 변환합니다.뒤집은 값이 원래 리스트에 존재하지 않는 경우에만('not' 연산자) 그 요소를 결과 리스트에 포함시킵니다.
회문 숫자(예: 11)나 한 자리 숫자(예: 4, 8, 9)는 뒤집어도 자기 자신과 같으므로 리스트에 이미 존재하게 되어 결과에서 제외됩니다.
최종 결과는 변수
my_result에 저장된 후 콘솔에 출력됩니다.
이처럼 문자열 슬라이싱과 리스트 컴프리헨션을 조합하면 별도의 반복문이나 조건문 없이 한 줄의 코드로 회문 요소를 손쉽게 필터링할 수 있습니다.