development

파이썬 리스트 맨 뒤의 값 가져오기와 빈 리스트 체크하기

안녕하세요. 파이썬 리스트 관련 간단하지만 자주 까먹는 예제를 가져왔습니다.


파이썬 리스트 맨 뒤의 값 가져오기

my_list = [1,2,3,4] 
print(my_list[-1]) 

my_string = 'abcd' 
print(my_string[-1])

my_tuple = (2, 3, 4, 5)
print(my_tuple[-1])

결과는 어떻게 나올까요?

4
d
5

맞습니다. 리스트의 마지막 값을 가져오는 방법은 [-1]을 사용하여 할 수 있습니다. 이는 스트링도, 튜플도 같은 형식으로 가능합니다. 그렇다면 리스트에 원소가 하나밖에 없을때는 어떤값을 가져올까요?


리스트에 값이 하나밖에 없는 경우 [-1]로 가져오는 경우

my_list = [1] 
print(my_list[-1]) 
my_string = 'a' 
print(my_string[-1]) 
my_tuple = (2,) 
print(my_tuple[-1])
----
1
a
2

하나라도 역시 마지막 값은 그 하나의 값이므로 잘 출력합니다.

그렇다면 빈 리스트의 경우는 어떻게 출력할까요?


빈리스트의 경우 [-1]로 맨 끝 값을 가져오는 경우

my_list = [] 
print(my_list[-1]) 
#my_string = '' 
#print(my_string[-1]) 
#my_tuple = () 
#print(my_tuple[-1])
----
...
    print(my_mylist[-1])
IndexError: tuple index out of range

가져올 값이 없으므로 인덱스 에러가 나게 됩니다. 스트링과 튜플도 역시 동일합니다.


빈 리스트 예외처리하기

빈리스트의 예외처리는 보통 len(list)를 쓰지만 이는 파이써닉 하지 않은 방법이라고 하네요.

간단하게 if list: 로 처리된다고 합니다. 다만 가독성이 좋진 않네요. 그래도 이걸 익혀두면 더 편할것 같습니다.

my_list = [] 
if mylist: 
    print(my_list[-1]) 
else: 
    print('empty') 
----
empty

이는 스트링과 튜플 역시 동일합니다.

PEP 8 스타일 가이드에 따르면 다음과 같습니다.

For sequences, (strings, lists, tuples), use the fact that empty sequences are false: # Correct:
if not seq:
if seq:

출처: https://peps.python.org/pep-0008/