파이썬의 내장함수 all과 any에 대해서 간단히 살펴보고 참고할 만한 것을 적는다.
all(x)은 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며, 이 x의 모든 요소가 참이면 True, 거짓이 하나라도 있으면 False를 리턴한다.
>>> all([1,2,3]) True >>> all([1,2,3,0]) False
리스트 자료형 [1,2,3,0] 중에서 요소 0은 거짓이므로 False를 리턴한다.
any(x)는 x 중 하나라도 참이 있을 경우 True를 리턴하고, x가 모두 거짓일 경우에만 False를 리턴한다. all(x)의 반대 경우라고 할 수 있다.
>>> any([1,2,3,0]) True >>> any([0, ""] False
위의 사실을 참고할 때, all([])과 any([])는 각기 어떤 값을 리턴할 것으로 예상되는가? 빈 리스트는 False이기 때문에 둘 다 False를 리턴할 것이라고 필자는 예상했다. 그러나 실제로 실행해본 결과, 예상과 달라 신기했다.
>>> all([]) True >>> any([]) False
파이썬 내장함수인 all() 과 any() 코드를 살펴보니 위의 결과가 납득이 되었다.
def all(iterable):
for element in iterable:
if not element:
return False
return True
def any(iterable):
for element in iterable:
if element:
return True
return False
위의 코드를 볼 때, 빈 리스트인 []는 iterable 하지만 for 문을 돌지 않는다. 따라서 all([])은 True를, any([])는 False를 리턴하는 듯 하다.