개요
all, any 함수는 Python 내장 함수로 여러 개의 데이터에 대한 참/거짓을 판단할 때 사용한다.
각각 살펴보자.
all(iterable)
일반적으로 여러 개의 데이터가 어떤 조건을 만족하는지 확인할 때 다음과 같은 반복문을 사용해 확인하게 된다.
# 전달 받은 데이터 모두 짝수인지 확인
def all_positive_even(nums):
for num in nums:
if num <= 0 or num % 2 == 1:
return False
return True
all 함수는 매개변수로 iterable한 객체(list, tuple 등)를 받아, 전달받은 객체 내의 모든 요소가 True일 때만 True를 반환한다. 즉, 전달받은 객체 중 하나의 요소라도 False이면 False를 반환한다. 따라서 all 함수를 사용하면 반복문 없이도 여러 개의 데이터가 어떤 조건에 대해 모두 참인지 확인할 수 있다.
print(all([True, True, True, True, True]))
print(all([True, False, True, True, True]))
all 함수는 boolean 형이 아닌 데이터에 대해서는 내부적으로 형변환을 하기 때문에 매개변수로 전달되는 데이터 내의 모든 요소가 boolean 형 데이터일 필요는 없다.
print(all([1, "TEST", 1 < 2, 2 + 3 == 5]))
표현식 사용
리스트 컴프리헨션 또는 제너레이터 표현식을 전달해도 된다.
# 리스트 내 모든 요소가 양수인지
print(all(num > 0 for num in [1, 2, 4, 8]))
# 리스트 내 모든 요소가 짝수인지
print(all(num % 2 == 0 for num in [1, 2, 4, 8]))
아래는 Python 공식 문서에서 확인할 수 있는 all 함수의 구현 코드이다.
def all(iterable):
for element in iterable:
if not element:
return False
return True
any(iterable)
any 함수도 all 함수처럼 매개변수로 iterable한 객체(list, tuple 등)를 전달받는다. 다만 AND 연산과 비슷한 all 함수와는 달리, 전달 받은 데이터 내 요소가 하나라도 참이면 참을 반환한다. 즉, OR 연산과 비슷하게 여러 조건 중 하나의 조건만 만족하면 될 때 사용할 수 있다.
print(any([False, False, False]))
print(any([False, True, False]))
표현식 사용
all 함수와 마찬가지로 표현식과 함께 사용하면 강력하다.
# 리스트 내 요소 중 음수가 있는지
print(any(num < 0 for num in [1, 2, 4, 8]))
# 리스트 내 요소 중 짝수가 있는지
print(any(num % 2 == 0 for num in [1, 2, 4, 8]))
아래는 Python 공식 문서에서 확인할 수 있는 any 함수의 구현 코드이다.
def any(iterable):
for element in iterable:
if element:
return True
return False
참고 문서
https://www.daleseo.com/python-all/