튜플로 구성된 목록에서 모든 요소가 양수인 튜플만 골라내야 하는 경우, 리스트 컴프리헨션(list comprehension)과 내장 함수 all()을 함께 사용하면 간결하고 효율적으로 해결할 수 있습니다.
예제 코드
my_list = [(56, 43), (-31, 21, 23), (51, -65, 26), (24, 56)]
print("The list is : ")
print(my_list)
my_result = [sub for sub in my_list if all(elem >= 0 for elem in sub)]
print("The positive elements are : ")
print(my_result)
실행 결과
The list is : [(56, 43), (-31, 21, 23), (51, -65, 26), (24, 56)] The positive elements are : [(56, 43), (24, 56)]
코드 설명
양수와 음수가 섞여 있는 튜플들의 목록을 정의한 뒤, 콘솔에 출력합니다.
리스트 컴프리헨션을 사용해 목록의 각 튜플을 하나씩 순회하며 검사합니다.
all()함수를 통해 해당 튜플의 모든 요소가 0 이상인지 확인합니다.조건을 만족하는 튜플만 새로운 목록에 포함되어 변수에 저장됩니다.
최종 결과 목록을 콘솔에 출력합니다.
핵심 포인트
all() 함수는 반복 가능한 객체(iterable)의 모든 요소가 참일 때 True를 반환합니다. 따라서 all(elem >= 0 for elem in sub)은 "튜플 내 모든 요소가 0 이상인가?"를 판별하는 조건으로 작동합니다. 음수가 하나라도 포함되어 있으면 False를 반환하므로, 해당 튜플은 결과 목록에서 자연스럽게 제외됩니다.
참고로 위 코드의 조건은 >= 0이므로 엄밀히 말하면 '양수'가 아닌 '음수가 아닌 수(0 포함)'를 기준으로 필터링합니다. 0을 제외하고 싶다면 조건을 elem > 0으로 변경하면 됩니다.