반응형
파이썬 내부에서 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이 아닌 원소가 존재
반응형
'Python > 알고리즘팁' 카테고리의 다른 글
파이썬 문자 아스키코드 얻는법 (0) | 2021.04.02 |
---|---|
그리디 알고리즘의 조건 (0) | 2021.04.01 |
파이썬 이중 리스트 순회하며 특정요소 꺼내기 (0) | 2021.03.17 |
파이썬 딕셔너리 순회하기 (0) | 2021.03.17 |
파이썬 Counter 객체 사용하기 (0) | 2021.03.12 |
댓글