programming

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


by Kitle · 2022. 04. 22.



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


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

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/