728x90
반응형
[False] and [True]의 결과는 무엇일까?
False? True?
답은 [True]
and 연산은 False 또는 False로 간주되는 값이 나올때까지 다음과 비교한다.
False가 나오지 않는다면 마지막 값을 리턴
[False]는 boolean 타입이 아니라 리스트 타입이다. 따라서 False가 아니라 그다음 [True]를 비교한다.
[True] 역시 list이다. 그 뒤에 확인할 요소가 없으므로 [True]를 반환
추가적인 예시
print([False] and [True])
print([False] and [False])
print([True] and False and True)
print([True] and [] and False)
# [True]
# [False]
# False
# []
3번째의 경우 중간에 False가 나왔기 때문에 뒷 요소까지 보지 않고 False 반환
4번째의 경우 []는 False로 간주되기 때문에 끝까지 보지 않고 [] 나온 순간에 [] 반환
Fasle로 간주되는 값들
None, 0, 0.0, 0j, '', [], (), set(), {}
[]는 False로 간주되는 값이다.
반대로 말하면 빈 리스트가 아니면 True로 간주된다.
or 연산은 True 또는 True로 간주되는 값이 나올 때까지 진행한다.
따라서 [False] and [True]는 [False]를 반환할 것이다. 확인해보자.
print([False] or [True])
print([False] or False)
print([True] or [False])
print(False or [False])
print(False or True)
# [False]
# [False]
# [True]
# [False]
# True
* 비교 연산 참고
728x90
반응형
'Python' 카테고리의 다른 글
Python: python-dotenv - .env 파일 관련 library # load_dotenv # override (0) | 2023.12.08 |
---|---|
Python: class inheritance MRO, super # method resolution order # super # 상속 순서 # 부모 클래스 # 초기화 (0) | 2023.12.06 |
멀티프로세싱, 멀티스레딩 이해하기 with Python (0) | 2023.12.02 |
Python: Generator # 제너레이터 # yield (2) | 2023.12.01 |
Python: Deep copy , Shallow copy, # mutable, immutable # 깊은 복사, 얕은 복사 (0) | 2023.11.26 |