Python에서 리스트가 비어 있는지 확인하는 방법은 여러 가지가 있습니다. 그중에서도 이 글에서 가장 먼저 소개할 if not list처럼 리스트의 참/거짓 값을 활용하는 방식이 가장 파이썬다운(Pythonic) 방법으로 꼽히며, 파이썬 개발자들이 가장 많이 권장하는 방식입니다. 이 외에 소개할 다른 방법들도 문법적으로는 올바르게 동작하지만, 좋은 코드 스타일로는 여겨지지 않습니다.
이 글에서는 Python에서 리스트가 비어 있는지 확인하는 다양한 방법을 살펴보겠습니다.
- 리스트 값의 참(True)/거짓(False) 여부 확인하기
- len() 함수 사용하기
- 리스트를 빈 리스트와 비교하기
본격적으로 시작하기 전에, 리스트가 무엇인지 간단히 짚고 넘어가겠습니다.
Python 리스트란?
Python 리스트는 여러 항목을 하나로 묶어 저장하는 자료구조입니다. 예를 들어 장보기 목록의 품목들을 하나의 변수에 담고 싶다면, 품목마다 변수를 하나씩 선언하는 대신 리스트 하나에 모두 담으면 됩니다. 관련된 항목들을 하나의 리스트로 선언하면 여러 변수를 일일이 만들 필요가 없어 시간을 크게 절약할 수 있습니다.
grocerylist = ["eggs", "fruits", "kale", "grapefruits"]
이렇게 해 두면 장보기 목록을 확인하고 싶을 때 print 문 하나만으로 전체 목록을 출력할 수 있습니다.
print(grocerylist) # ['eggs', 'fruits', 'kale', 'grapefruits']
리스트에는 위 예시처럼 문자열만 담을 수 있는 것이 아니라, 불리언(True/False)이나 숫자 등 다른 값들, 혹은 이들의 조합도 담을 수 있습니다.
빈 리스트는 거짓(False) 값을 가진다
Python에서는 문자열, 튜플, 리스트 같은 시퀀스(순서형) 자료형이 비어 있으면 False, 비어 있지 않으면 True로 평가됩니다.
리스트를 포함한 모든 객체는 불리언 값인 True 또는 False로 평가될 수 있으며, 이 값이 그대로 반환됩니다. 리스트 객체의 경우 비어 있지 않은 한 항상 True 값을 가집니다. 이 특성은 아래의 if 문 같은 조건문에서 유용하게 활용할 수 있습니다. 반환된 결과(리스트가 완전히 비어 있는지 여부)에 따라 어떤 동작을 수행할지 결정할 수 있기 때문입니다.
ourList = []
먼저 리스트가 True가 아닌지, 즉 비어 있는지 확인해 보겠습니다.
if not ourList:
print("The list is empty")
# 출력 결과: The list is empty
반대로 리스트가 True인지 확인할 수도 있습니다. 리스트가 비어 있지 않다면, 리스트와 그 값을 화면에 출력하는 등의 작업을 수행할 수 있습니다.
if ourList:
print("The list is not empty")
# ourList가 비어 있으므로 이 줄은 실행되지 않습니다 -- 화면에는 아무것도 출력되지 않습니다
이처럼 if 뒤에 리스트 이름만 적어주면, Python이 리스트에 항목이 있는지 아니면 비어 있는지에 따라 True 또는 False로 자동 평가해 줍니다.
len() 함수 사용하기
길이 함수인 len()을 사용해 리스트의 길이를 확인하면, 리스트가 비어 있는지 간접적으로 알아낼 수도 있습니다. 다만 Python 공식 스타일 가이드(PEP 8)에서는 빈 리스트 확인에 len()을 사용하는 것을 권장하지 않습니다. 리스트가 기본적으로 가진 불리언 값을 확인하는 것이 더 우아하고 직관적인 방법이며, len()을 사용하면 Python이 내부적으로 더 많은 연산을 수행해야 하기 때문입니다.
ourList = []
아래 if 문은 ourList에 길이 값이 있는지 묻습니다. 길이가 있다면, 즉 항목이 존재한다면 문장을 출력합니다.
if len(ourList):
print("The list is not empty")
# ourList가 비어 있으므로 이 줄은 실행되지 않습니다 -- 화면에는 아무것도 출력되지 않습니다
아래 if 문은 ourList에 길이 값이 없는지 묻습니다. 길이가 없다면, 즉 리스트가 비어 있다면 문장을 출력합니다.
if not len(ourList):
print("The list is empty")
# 출력 결과: The list is empty
len()을 사용하는 또 다른 방법은 길이 결과를 "0"과 비교하는 것입니다.
if len(ourList) == 0:
print("The list is empty")
# 출력 결과: The list is empty
빈 리스트와 비교하기
리스트를 빈 리스트([])와 직접 비교할 수도 있습니다. 무엇과 비교하는지 코드상으로 명확하게 드러내고 싶을 때 이 방법을 사용할 수 있습니다. 다만 이 방법 역시 문법적으로는 올바르지만 Python에서 권장되는 방식은 아닙니다. Python은 비교 대상인 불필요한 빈 리스트([])를 새로 생성한 뒤에야 비교를 수행하기 때문입니다.
ourList = []
if ourList == []:
print("The list is empty")
# 출력 결과: The list is empty
마치며
지금까지 리스트가 비어 있는지 확인하는 세 가지 방법, 즉 참/거짓 값 확인, len() 사용, 빈 리스트와의 비교를 살펴보았습니다. 그중 첫 번째 방법인 if not list(리스트가 거짓인지 확인)가 Python 스타일 가이드에서 권장하는 방법입니다. Python 공식 문서를 참고하면 프로그래밍 스타일 가이드에 대한 더 많은 정보와 각 버전 업데이트의 새로운 내용을 확인할 수 있습니다.
Python에 대해 더 배우고 싶으신가요? Python 기초와 학습 시작 방법을 다룬 글도 함께 확인해 보시기 바랍니다. 즐거운 코딩 되시길 바랍니다!