오늘도 개발

all(), any() 본문

웹 프로그래밍/Python3

all(), any()

Sueeeeeee 2023. 2. 18. 18:10

all(iterable)

iterable의 모든 요소가 참이면 True 반환.

iterable이 비어있으면 True 반환.

all([True, True, True]) # True
all([True, True, False]) # False
all([]) # True

 

any(iterable)

iterable의 요소 중 하나라도 참이면 True 반환.

iterable이 비어있으면 False 반환.

any([True, False, False]) # True
any([False, False, False]) # False
any([]) # False

 

유의할 점

all과 any는 인자로 들어온 iterable이 지연평가* 되는 경우 단락 평가**처럼 동작한다.

따라서 지연평가되는 iterable을 사용하면 속도를 높일 수 있다. 

# iterable이 지연평가 되지 않는 경우
any(list(range(100))  # list가 먼저 0부터 999까지 iteration, 이후 any 실행

# iterable이 지연평가 되는 경우
any(range(100))  # 0, 1까지 iteration되면 바로 True 반환

* 지연 평가(lazy evaluation) : 불필요한 연산을 줄이기 위해 연산을 지연시키는 방법.

** 단락 평가(short-circuit evaluation) : 평가 결과가 중간에 결정나면 끝까지 평가하지 않는 방법. 

'웹 프로그래밍 > Python3' 카테고리의 다른 글

pytest 사용법 2) mock  (0) 2023.01.19
pytest 사용법 1) 설정, fixture, parametrize  (0) 2023.01.18
pyenv와 pyenv-virtualenv  (0) 2023.01.03
setdefault와 defaultdict  (0) 2022.12.23
Python의 GC(Garbage Collection)  (0) 2022.10.31