파이썬에서 정수만 포함된 튜플을 걸러내야 할 때는 간단한 반복문과 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를 반환하므로, 앞서 살펴본 중첩 반복문 로직을 깔끔하게 대체할 수 있습니다. 가독성과 유지보수 측면에서 실무에서는 이 방식이 선호되는 편입니다.