Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 특정 자릿수만 포함된 숫자를 리스트에서 추출하는 방법

리스트에서 특정 자릿수(digit)만으로 구성된 숫자만 골라내야 하는 경우, 리스트 컴프리헨션(list comprehension)'all' 연산자를 조합하면 매우 간결하게 해결할 수 있습니다. 별도의 복잡한 반복문 없이 한 줄의 코드로 조건에 맞는 요소만 필터링할 수 있다는 것이 이 방법의 가장 큰 장점입니다.

아래는 실제 동작 예시입니다.

예제 코드

my_list = [3345, 2345, 1698, 2475, 1932]

print("The list is :")
print(my_list)

digit_list = [2, 3, 5, 4]

my_result = [index for index in my_list if all(int(element) in digit_list for element in str(index))]

print("The result is :")
print(my_result)

실행 결과

The list is :
[3345, 2345, 1698, 2475, 1932]
The result is :
[3345, 2345]

코드 설명

  • 먼저 숫자로 이루어진 리스트를 정의하고, 콘솔에 그대로 출력합니다.

  • 다음으로, 허용할 자릿수를 담고 있는 정수형 리스트(digit_list)를 정의합니다. 위 예제에서는 2, 3, 5, 4만 허용됩니다.

  • 리스트 컴프리헨션을 사용하여 원본 리스트의 각 요소를 순회하며, 각 숫자를 문자열(str(index))로 변환한 뒤 한 글자씩 잘라냅니다.

  • 잘라낸 각 문자를 다시 정수(int(element))로 변환하여 digit_list에 포함되어 있는지 검사합니다.

  • 'all' 연산자는 모든 자릿수가 조건을 충족할 때만 True를 반환하므로, 하나라도 허용되지 않은 자릿수가 들어 있으면 해당 숫자는 결과에서 제외됩니다. 예를 들어 1698은 1과 9, 6이 목록에 없기 때문에 걸러집니다.

  • 조건을 통과한 숫자들만 모아 새로운 리스트를 생성하고 변수에 할당한 후, 최종 결과를 콘솔에 출력합니다.

핵심 포인트 정리

  • str()로 숫자를 문자열화하면 각 자릿수에 개별 접근할 수 있어 자릿수 단위 검사가 쉬워집니다.

  • all() 제너레이터 표현식을 활용하면 중첩 반복문 없이도 "모든 요소가 조건을 만족하는지"를 선언적으로 표현할 수 있습니다.

  • 이 패턴은 전화번호 필터링, 유효 자릿수 검증 등 다양한 데이터 전처리 작업에 응용할 수 있습니다.