논리연산자 관련, 파이썬 내장함수 all()에 대한 질문입니다.

조회수 531회

안녕하세요 코린이입니다.

이미지

위의 all()함수는 리스트나 딕셔너리 같은 iterable 타입이면 True를 반환하는 함수입니다.

False를 반환하는 조건이 어떻게 되는지 모르겠어서 질문드립니다.

TypeError: 'int' object is not iterable

iterable이 아닌 타입을 넣으면 위와 같은 Typeerrer를 토해냅니다.

not terator는 무슨 조건인가요..?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • https://docs.python.org/ko/3/library/stdtypes.html#truth-value-testing False를 반환하는 조건은 공식문서를 참고하세요. 그리고 이터러블은 한 번에 하나씩 돌려줄 수 있는 객체를 의미합니다. for-loop 으로 순회가 가능한 대상인지를 생각해보시면 편하게 구분할 수 있습니다. int 타입은 반복 가능한 객체가 아닌 반면, str 타입은 문자 하나하나를 순회할 수 있죠. Kyungmin Lee 2021.1.3 17:05

2 답변

  • false를 반환하는 조건

    0이거나 "" (빈 문자열)인 경우

    a = [1,2,0,4,5]
    print(all(a)) # False
    b = "" 
    print(all(b)) # False
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 'iterable 타입이면 True 를 반환하는 함수입니다' : 아닙니다.
    • all 함수는 boolean 의 리스트(정확하게는 iterable)가 모두 참이여야 참을 반환하는 함수입니다. 하나라도 거짓이면 함수는 거짓을 반환합니다.
    • 이에 반해 any 함수는 boolean 의 리스트 중 아무거나 하나이상 참이면 참을 반환하고, 모두 거짓이면 거짓을 반환하는 함수입니다.

    예를 들어보면, 학생들의 성별을 리스트로 가지고 있다고 하면,

    별빛반학생성별 = [ "남", "남", "남", "남", "남", "남", "남", "남" ]
    별빛반학생남자인가 = [ 성별 == "남" for 성별 in 별빛반학생성별 ]
    if all(별빛반학생남자인가):
      print("모두 남자!")
    else:
      print("여학생도 있음!")
    

    이런식으로 쓸 수 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)