파이썬의 any()와 all() 함수는 리스트와 같은 반복 가능한 객체(iterable)의 항목들을 평가하여 참(True) 여부를 판단하는 내장 함수입니다. any()는 항목 중 하나라도 참이면 True를 반환하고, all()은 모든 항목이 참일 때만 True를 반환합니다.
any()와 all()이 필요한 이유
프로그래밍을 하다 보면 리스트에 담긴 값 중 하나라도 참인지, 아니면 모두 참인지 확인해야 하는 경우가 자주 생깁니다. 예를 들어 레이싱 드라이버의 경기 기록을 관리하는 프로그램을 만든다면, 특정 시즌에 드라이버가 한 번이라도 졌는지, 아니면 전부 졌는지 계산해야 할 수 있습니다.
바로 이럴 때 파이썬 내장 함수 any()와 all()이 유용합니다. any()는 객체의 모든 항목을 순회하면서 하나라도 True가 있으면 True를 반환하고, all()은 모든 항목이 True일 때만 True를 반환합니다.
이 글에서는 파이썬에서 any()와 all() 함수를 사용하는 방법을 살펴보고, 각 함수의 실제 활용 예시도 함께 알아보겠습니다.
파이썬 any() 함수
any() 함수는 리스트, 문자열, 튜플 같은 반복 가능한 객체의 값 중 하나라도 True가 있으면 True를 반환하고, 그렇지 않으면 False를 반환합니다.
any() 함수는 검색하려는 값을 담고 있는 객체 하나를 매개변수로 받습니다. 문법은 다음과 같습니다.
any(iterable_object)
any()는 반복 가능한 객체 안에 최소 한 개의 항목이 True이면 True를 반환합니다. 반대로 모든 요소가 True가 아니거나 객체가 비어 있으면 False를 반환합니다.
리스트에서 any() 사용하기
데이터 분석 회사에서 레이서들의 성적을 분석한다고 가정해 보겠습니다. John Appleseed 선수가 인디애나폴리스 500(Indy 500) 대회에서 한 번이라도 10위권에 들어본 적이 있는지 확인하는 업무를 맡았습니다. 그의 대회 출전 기록은 리스트로 저장되어 있으며, 10위권에 들었으면 True, 그렇지 않으면 False입니다.
다음 코드로 그가 인디 500에서 한 번이라도 10위권에 들었는지 확인할 수 있습니다.
race_wins_indy_500 = [False, False, True, False] print(any(race_wins_indy_500))
실행 결과: True
첫 번째 줄에서는 인디 500 출전마다 10위권에 들었는지 여부를 저장하는 리스트를 정의합니다. 그다음 any() 함수로 리스트에 True인 항목이 있는지 확인합니다. 이 예시에서 그는 한 번 10위권에 들었기 때문에 any()는 True를 반환했습니다.
딕셔너리에서 any() 사용하기
any() 함수는 딕셔너리에도 사용할 수 있습니다. John Appleseed의 2018년 인디 500 출전 기록이 담긴 딕셔너리가 있고, 그 대회에서 10위권에 들었는지 확인하고 싶다고 가정해 보겠습니다.
indy_500_2018_john = {
'driver_name': 'John Appleseed',
'race_year': 2018,
'top_ten': True
}
print(any(indy_500_2018_john))
실행 결과: True. 딕셔너리에 any()를 적용하면 기본적으로 키(key)가 평가됩니다. 이 딕셔너리의 키들은 모두 비어 있지 않은 문자열이므로 참으로 평가되어 True를 반환합니다. 만약 값(value)을 기준으로 판단하고 싶다면 any(indy_500_2018_john.values())처럼 .values() 메서드를 활용하면 됩니다.
문자열에서 any() 사용하기
마찬가지로 any()는 문자열이나 튜플에도 사용할 수 있습니다. 문자열의 경우, 문자열에 어떤 값이라도 들어 있으면 True를 반환하고 비어 있으면 False를 반환합니다.
예를 들어 최근 인디 500 대회에서 선수의 10위권 기록을 저장하는 문자열에 값이 있는지 확인하고 싶다고 가정해 보겠습니다. 다음 코드로 이 작업을 수행할 수 있습니다.
top_10_ranking = "" print(any(top_10_ranking))
실행 결과: False. John Appleseed가 최근 인디 500에서 좋은 성적을 거두지 못했기 때문에 top_10_ranking 변수는 빈 문자열입니다. 문자열이 비어 있으므로 프로그램은 False를 반환합니다.
파이썬 all() 함수
all()은 파이썬 내장 함수로, 반복 가능한 객체의 모든 항목이 True일 때 True를 반환하고 그렇지 않으면 False를 반환합니다. 또한 객체가 비어 있으면 all()은 True를 반환한다는 점이 특징입니다.
all()의 문법은 any()와 동일하며, 검색 대상이 되는 반복 가능한 객체 하나를 매개변수로 받습니다.
all(iterable_object)
all()은 다음 경우에 True를 반환합니다.
- 모든 값이 True일 때
- 반복 가능한 객체가 비어 있을 때
그 외의 경우에는 False를 반환합니다.
리스트에서 all() 사용하기
all()의 활용 예시를 살펴보겠습니다. John Appleseed가 인디 500 대회에서 10위권에 들었는지 여부를 불리언 값 리스트로 저장하고 있다고 가정해 보겠습니다.
그가 모든 대회에서 10위권에 들었는지 확인하려면 all() 함수를 사용하면 됩니다. 다음은 all()로 그가 모든 인디 500 대회에서 10위권에 들었는지 확인하는 예제 프로그램입니다.
race_wins_indy_500 = [False, False, True, False] print(all(race_wins_indy_500))
실행 결과: False. 첫 번째 줄에서 인디 500 대회마다 10위권 진입 여부를 저장하는 리스트를 선언합니다. 그다음 all()로 리스트의 모든 값이 True인지 확인합니다. 이 예시에서는 하나의 값만 True이므로 프로그램은 False를 반환합니다.
딕셔너리에서 all() 사용하기
John Appleseed의 2018년 인디 500 기록이 담긴 딕셔너리가 있다고 가정해 보겠습니다. 딕셔너리의 모든 항목이 참으로 평가되는지 확인하고 싶다면 다음 코드를 사용할 수 있습니다.
indy_500_2018_john = {
'driver_name': 'John Appleseed',
'race_year': 2018,
'top_ten': True
}
print(all(indy_500_2018_john.values()))
실행 결과: True. 딕셔너리의 값들을 .values()로 가져와 all()로 평가하면, 빈 값이나 False가 없으므로 True가 반환됩니다. 참고로 딕셔너리 자체에 all()을 적용하면 키(key)가 평가되며, 이 딕셔너리의 키들은 모두 비어 있지 않은 문자열이므로 역시 True를 반환합니다.
문자열에서 all() 사용하기
all()도 any()와 같은 방식으로 문자열에 사용할 수 있습니다.
분석 중인 레이서의 이름을 저장하는 문자열이 있다고 가정해 보겠습니다. 이 문자열이 비어 있는지 확인하려면 all() 함수를 사용할 수 있습니다. 앞서 말했듯이 문자열이 비어 있으면 all()은 False를 반환합니다. 다음은 분석 중인 레이서의 이름이 비어 있는지 확인하는 예제입니다.
racer_name = "John Appleseed" print(all(racer_name))
실행 결과: True. racer_name 변수에 할당된 문자열에는 값이 들어 있으므로, all() 함수 실행 시 참으로 평가됩니다.
마무리
any() 함수는 반복 가능한 객체의 항목 중 하나라도 True인지 확인할 때, all() 함수는 모든 항목이 True인지 확인할 때 사용합니다.
이 글에서는 파이썬에서 any()와 all() 함수를 사용하는 방법을 알아보고, 리스트·딕셔너리·문자열 등 다양한 반복 가능한 객체에 적용하는 예시도 살펴보았습니다. 이제 여러분도 프로처럼 any()와 all()을 활용할 준비가 되었습니다!
전문 파이썬 개발자가 되는 것이 목표이신가요? 무료 커리어 카르마(Career Karma) 앱을 지금 다운로드하고, 전문 커리어 코치와 함께 새로운 커리어 여정을 시작하는 방법에 대해 상담해 보세요.