파이썬 코딩을 하면서, List가 비어있는지 확인하는 코드를 무심결에 'list == False' 형식으로 적었다가 에러가 발생했다.
리스트가 비어있는지의 여부를 올바르게 확인하는 방법을 정리해 보자.
우선, 아래는 실수하기 쉬운, 잘못된 코드들의 예시이다.
list_empty = []
if list_empty == None: # 리스트는 'None'이라는 객체와 동일하지 않다.
print('empty')
if list_empty == False: # 리스트의 bool 값이 False인 것이지, list가 False와 같은 것이 아니다.
print('empty')
if list_empty is False: # 위와 동일. 메모리 주소까지 같냐고 묻는 것이므로 더더욱 말이 안 된다.
print('empty')
위의 네 가지 if 블럭들은 모두 list가 비어있는지를 판단하는 틀린 예시들이다. 우선 첫 번째 예시에서 None은 그저 비어 있는 것이 아니라, 비어 있는 값을 가지는 엄연한 객체이다. 따라서 list와 같을 수 없다. 두 번째와 세 번째는 '비어 있는 리스트는 False 값을 가진다' 라는 말을 잘못 해석하여 생긴 오류이다. 비어 있는 리스트의 Bool 값이 False 인 것이지, 리스트 자체는 False와 같지 않다. 따라서 리스트가 비어 있는지 확인하는 올바른 코드는 다음과 같다.
list_empty = []
if bool(list_empty) == False: # 권장하지는 않는 방법
print('empty')
if len(list_empty) == False: # 권장하지 않는 방법.
print('empty')
if not list_empty: # 권장하는 방법. Pythonic Way
print('empty')
세 번째 방법은 implicit한 방법으로, 가장 파이썬스러운 표현으로 권장하는 패턴이다. 그리고 코드도 가장 간결하다. list가 비어있는지 확인할 때는 if not list, 비어있지 않은지 확인할 때는 if list. 간단하다!
reference
https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty
How do I check if a list is empty?
For example, if passed the following: a = [] How do I check to see if a is empty?
stackoverflow.com
'파이썬(Python) > 어?(궁금증)' 카테고리의 다른 글
함수에서의 리스트 수정..? (0) | 2021.02.07 |
---|---|
for문을 이용한 리스트의 원소 변경...어? (0) | 2021.01.23 |
댓글