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

Python – 정수만 포함된 튜플 필터링하는 방법

파이썬에서 정수만 포함된 튜플을 걸러내야 할 때는 간단한 반복문과 not 연산자, 그리고 isinstance 메서드를 활용하면 손쉽게 해결할 수 있습니다.

예제 코드

다음은 이를 구현한 예제입니다:

my_tuple = [(14, 25, "Python"), (5, 6), (3, ), ("cool", )]

print("The tuple is :")
print(my_tuple)

my_result = []
for sub in my_tuple:
   temp = True
   for element in sub:

      if not isinstance(element, int):
         temp = False
         break
   if temp :
      my_result.append(sub)

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

출력 결과

The tuple is :
[(14, 25, 'Python'), (5, 6), (3,), ('cool',)]
The result is :
[(5, 6), (3,)]

코드 설명

  • 정수와 문자열이 섞여 있는 튜플들의 리스트를 정의한 후 콘솔에 출력합니다.

  • 필터링된 결과를 저장할 빈 리스트를 생성합니다.

  • 리스트를 순회하면서 각 요소에 대해 isinstance 메서드를 사용해 해당 요소가 정수(int) 타입인지 검사합니다.

  • 정수가 아닌 요소를 발견하면 불리언 변수를 False로 변경합니다.

  • 이후 break 문으로 내부 반복문을 즉시 종료해 불필요한 검사를 줄입니다.

  • 불리언 값이 True, 즉 모든 요소가 정수인 경우에만 해당 튜플을 결과 리스트에 추가합니다.

  • 마지막으로 필터링된 최종 결과가 콘솔에 출력됩니다.

더 간결한 방법: all() 함수와 리스트 컴프리헨션

위 코드는 파이썬의 내장 함수 all()과 리스트 컴프리헨션을 활용하면 다음과 같이 한 줄로 더욱 간결하게 작성할 수 있습니다:

my_result = [sub for sub in my_tuple if all(isinstance(element, int) for element in sub)]

all() 함수는 반복 가능한 객체의 모든 요소가 참일 때만 True를 반환하므로, 앞서 살펴본 중첩 반복문 로직을 깔끔하게 대체할 수 있습니다. 가독성과 유지보수 측면에서 실무에서는 이 방식이 선호되는 편입니다.