리스트에서 모든 자릿수가 동일한 숫자, 즉 모노 디지트(mono-digit) 요소를 추출해야 하는 경우가 있습니다. 이럴 때 리스트 컴프리헨션(list comprehension)과 all() 연산자를 함께 사용하면 간결하고 효율적으로 처리할 수 있습니다.
아래 예제를 통해 실제 구현 방법을 살펴보겠습니다.
예제 코드
my_list = [863, 1, 463, "pyt", 782, 241, "is", 639, 4, "fun"]
print("원본 리스트 :")
print(my_list)
my_result = [index for index in my_list if all(str(element) == str(index)[0] for element in str(index))]
print("결과 리스트 :")
print(my_result)실행 결과
원본 리스트 : [863, 1, 463, 'pyt', 782, 241, 'is', 639, 4, 'fun'] 결과 리스트 : [1, 4]
코드 설명
- 먼저 정수와 문자열이 섞여 있는 리스트를 정의하고 콘솔에 출력합니다.
- 리스트 컴프리헨션을 사용해 리스트의 각 요소를 순회하면서, 해당 요소를 문자열로 변환한 뒤 각 자릿수가 첫 번째 자릿수와 일치하는지 검사합니다.
all()함수는 내부 조건이 모두 참일 때만True를 반환하므로, 모든 자릿수가 같은 값만 최종 결과에 포함됩니다.- 필터링된 결과는 변수에 저장되며, 이후 콘솔에 출력됩니다.
위 예제에서는 1과 4처럼 한 자릿수로만 이루어진 숫자만 결과로 추출되었습니다. 반면 863, 463, 782, 241, 639처럼 여러 자릿수가 섞인 숫자나 'pyt', 'is', 'fun' 같은 문자열은 조건을 만족하지 못해 제외됩니다.
이 방식은 코드가 짧고 가독성이 좋아, 데이터 전처리 과정에서 특정 패턴의 숫자를 걸러낼 때 유용하게 활용할 수 있습니다.