오뚝이개발자

[Python] 파이썬 any(), all() 함수 본문

Language/파이썬

[Python] 파이썬 any(), all() 함수

땅어 2020. 10. 29. 13:54
728x90
300x250

 

파이썬 내장함수 중 any()와 all()이 있다. 둘은 아큐먼트로 iterable한 객체를 받는데 이 객체를 돌면서 조건을 검사해 답을 True/False의 답을 반환한다.

  • any() : 하나라도 True인게 있으면 True
  • all() : 모두 True여야 True 반환

쉽게 생각해 any는 or, all은 and 연산이라 보면 된다.

>>> any([False, False, False])
False
>>> any([False, True, False])
True
>>> all([False, True, False])
False
>>> all([True, True, True])
True

 

if 조건과 함께 다음과 같이 사용할 수도 있다.

cur = 3
temp = [1,3,6,2]
if any(cur<num for num in temp):
	print("There exist number that is larger than 3")

 

그럼 퀴즈! all(range(3))의 결과는 무엇일까?

답은!!!!!! False이다. range(3)=[0,1,2]이기 때문이다. 조금 바꿔서 all(range(1,3))은 True이다.

 

any()는 특히 대소비교를 할 때 사용하면 sort보다 실행시간을 많이 줄일 수 있다. 예를 들어 어떤 수와 어떤 리스트의 원소들을 비교하는데 해당 수가 리스트 안의 max값보다 큰지만 알고 싶다고 하자. 이 때, sort를 사용한 뒤 비교하면 리스트를 모두 정렬하기 때문에 시간이 걸린다. 하지만 any를 쓰면 리스트 내에 해당 수보다 큰 수가 있기만 하면 바로 True를 return하고 끝내기 때문에 시간이 덜 걸린다. 

728x90
300x250
Comments