본문 바로가기
파이썬(Python)/어?(궁금증)

List 가 비어있는지 확인하기

by HealingMusic 2021. 1. 27.

파이썬 코딩을 하면서, 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

 

댓글