any와 all은 「컬렉션의 요소들에 대한 논리 검사를 한 줄로」 끝내는 내장 함수입니다.
for 반복문 + 조건 검사를 매우 간결하게 표현해 줍니다.
any(iterable) — 「하나라도 참이면」 True.
any([0, 0, 1, 0]) — True.
any([0, 0, 0]) — False.
all(iterable) — 「모두 참이면」 True.
all([1, 1, 1]) — True.
all([1, 0, 1]) — False.
빈 컬렉션의 경우 any는 False, all은 True입니다.
활용 예시 1.
nums = [3, 7, 12, 9, 15].
any(n > 10 for n in nums) — 「10 초과 값이 하나라도 있는가」 True.
all(n > 0 for n in nums) — 「모두 양수인가」 True.
제너레이터 표현식과 결합하면 매우 자연스럽습니다.
활용 예시 2.
사용자 입력 검증.
fields = [name, email, password].
if all(fields): — 「모든 필드가 비어 있지 않으면」.
빈 문자열은 Falsy이므로 all로 검사하면 모든 필드 입력 여부를 한 줄로 알 수 있습니다.
성능 매력: 「단축 평가(short-circuit)」.
any는 첫 True를 만나면 즉시 True 반환.
all은 첫 False를 만나면 즉시 False 반환.
백만 개의 컬렉션에서도 첫 요소에서 결정될 수 있어, 큰 데이터에서도 효율적입니다.
한 줄 요약
any는 「하나라도 True면 True」, all은 「모두 True면 True」를 한 줄로 검사합니다.
단축 평가로 큰 컬렉션에서도 효율적이며, 제너레이터 표현식과 결합이 자연스럽습니다.
더 알아볼 것
- sum·max·min·len — 다른 내장 집계 함수
- 제너레이터 표현식 vs 리스트 컴프리헨션
- Truthy·Falsy와 결합한 패턴