본문 바로가기
Python/알고리즘팁

파이썬 any, all 활용하기

by 붕어사랑 티스토리 2021. 3. 19.
반응형

파이썬 내부에서 any와 all의 함수 구현은 아래와 같다.

그냥 리스트 순회하면서 True False만 체크해주는 함수이다.

 

any => 요소중에 하나라도 True가 있으면 True 리턴, 전부다 False이면 False 리턴

all  => 요소 모두가 True이면 True 리턴, 하나라도 False가 있으면 False 리턴

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

 

 

특정 조건을 어떤 리스트에서 체크 할 때 파이썬에서는 any와 all을 활용하여 코드를 아주 간결하게 작성 할 수 있다.

 

c, c++ 같았으면 외부에 bool 변수 하나 지정해주고 포문돌려서 조건 찾으면 break하고 이럴텐데 파이썬은 아래와 같이 한줄로 정리 가능하다

if any(input == i for i in mylist1):
if all(input == i for i in mylist2):

저 any와 all 벗겨도 되는거 아니야? 하겠지만 벗기면 에러가 난다.

 

mylist1 = [1, 2, 3, 4, 5]
input1 = 1
if any(input1 == i for i in mylist1):
    print("리스트에 1이 존재함")

# 출력 : 리스트에 1이 존재함

input2 = 6
if any(input2 == i for i in mylist1):
    print("리스트에 6이 존재함")
else:
    print("리스트에 6이 존재하지 않음")
    
# 출력 : 리스트에 6이 존재하지 않음


mylist2 = [1, 1, 1, 1, 1]
input = 1
if all(input == i for i in mylist2):
    print("모든 리스트의 원소는 1임")
else:
    print("1이 아닌 원소가 존재")
    
# 출력 : 모든 리스트의 원소는 1임

mylist2 = [1, 1, 1, 1, 5]
input = 1
if all(input == i for i in mylist2):
    print("모든 리스트의 원소는 1임")
else:
    print("1이 아닌 원소가 존재")
    
# 출력 : 1이 아닌 원소가 존재

 

 

 

반응형

댓글