개발 프로세스/Back-end
[Python] 리스트 인덱싱과 슬라이싱
slowreem
2021. 7. 14. 02:24
인덱싱(indexing)이란?
인덱싱이란 리스트에 있는 값에 접근하기 위해, 이 값의 상대적은 주소(offset)를 사용하는 것이다. 첫 번째 값을 0으로 했을 때 첫 번째 값과 얼마나 떨어져 있는지를 표현한 값으로 인덱스 주소, 인덱스값이라고 한다.
* 리스트의 주소값은 왜 0부터 시작할까?
1부터 시작하는 것보다 0부터 시작하면 이진수 관점에서 메모리를 절약할 수 있다. 또한 진수에서 00부터 사용할 수 있는 장점도 있다.
cities = ['서울', '부산', '인천', '대구', '대전', '광주', '울산', '수원']
* cities 변수의 인덱스
값 | '서울' | '부산' | '인천' | '대구' | '대전' | '광주' | '울산' | '수원' |
인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
print(cities[0])
print(cities[2])
print(len(cities))
>> 서울
>> 인천
>> 8
슬라이싱(slicing)이란?
리스트의 인덱스를 사용하여 전체 리스트에서 일부를 잘라내어 반환한다. 파이썬의 리스트에서 마지막 인덱스값은 출력되지 않는다. '마지막 인덱스 - 1'까지만 출력된다. 마지막 인덱스가 다음 리스트의 시작 인덱스가 되어 코드를 작성할 때 쉽게 이해할 수 있다는 장점이 있다.
# cities >= 0 and cities < 5
cities[0:5]
>> ['서울', '부산', '인천', '대구', '대전']
# cities >= 5
cities[5:]
>> ['광주', '울산', '수원']
리버스 인덱스(reverse index)
마지막 값부터 -1을 할당하여 첫 번째 값까지 역순으로 올라오는 방식이다.
cities = ['서울', '부산', '인천', '대구', '대전', '광주', '울산', '수원']
print(cities[-8:])
>> ['서울', '부산', '인천', '대구', '대전', '광주', '울산', '수원']
* cities 변수의 리버스 인덱스
값 | '서울' | '부산' | '인천' | '대구' | '대전' | '광주' | '울산' | '수원' |
인덱스 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
증가값 (step)
슬라이싱에서는 시작 인덱스와 마지막 인덱스 외에 마지막 자리에 증가값을 넣을 수 있다.
변수명[시작 인덱스 : 마지막 인덱스 : 증가값]
cities = ['서울', '부산', '인천', '대구', '대전', '광주', '울산', '수원']
# 2칸 간격으로 출력/ 시작인덱스, 마지막인덱스가 비어있으므로 전체 출력
cities[::2]
# 역방향으로 출력/ 시작인덱스, 마지막인덱스가 비어있으므로 전체 출력
cities[::-1]
>> cities = ['서울', '인천', '대전', '울산']
>> cities = ['수원', '울산', '광주', '대전', '대구', '인천', '부산', '서울']