소개

  • 반복 가능한 객체의 모든 요소가 참(True)인 경우 참(True)을 반환하는 내장함수
  • 파라미터로 반복 가능한 객체(Iterable) 을 받는다.
  • 요소 중 하나라도 거짓(False)인 경우 False 를 반환한다.
  • 반복 가능한 객체가 비어있는 경우 True를 반환한다.
1
2
# 시그니처
all(iterable) -> bool
1
2
3
4
5
6
# 정의
def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

사용법

1
all(Iterable)

예시

반복 가능한 객체에 숫자 2026이 포함되어있는지 여부 확인

  • 모두 참(True)인 경우
1
2
3
4
sample_list = [2] * 100
all([x == 2 for x in sample_list])

# >> True
  • 하나라도 거짓(False)인 경우
1
2
3
4
5
sample_list = [2] * 100
sample_list[-1] = 3
all([x == 2 for x in sample_list])

# >> False
  • 반복 가능한 객체가 비어있는 경우
1
2
3
4
sample_list = []
all([x == 2 for x in sample_list])

# >> True

generator와 any

  • generator 또한 Iterable이므로 all 함수를 사용할 수 있다.
1
2
3
4
5
6
7
8
sample_list = (x for x in [2026]*100)

if all(x == 2026 for x in sample_list):
    print("모든 요소가 2026입니다.")
else:
      print("2026이 아닌 요소가 있습니다.")
    
# >> 모든 요소가 2026입니다.

all()의 연산 횟수

  • 정의에서 알 수 있듯, all 함수는 “처음 False를 만나는 경우” 혹은 “모든 요소를 순환한 뒤” 종료된다.
  • 즉, 반복 가능한 객체 안에 False 요소가 있다면 그 요소까지만 반복되며,
  • False 요소가 없는 경우는 전체 리스트를 반복한다.
  • 아래는 테스트 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 숫자를 반환하는 generator
count = 0 
def gen(num=100):
    global count
    for i in range(1, num):
        return_value = 2026 if not i == 50 else 0
        count += 1 # 전역변수 count : 요소를 생산할 때마다 1씩 증가
        yield return_value

if all(x == 2026 for x in gen(2050)):
    print("모든 요소가 2026입니다.")
else:
    print("2026이 아닌 요소가 있습니다.")

print(f"count : {count}")
1
2
2026이 아닌 요소가 있습니다.
count : 50

Reference

Python Built-in Functions - all

Comments