Programming/python

파이썬 리스트 Python List 인덱싱(Indexing), 슬라이싱 (Slicing) 하는 방법

방황하는 데이터불도저 2023. 2. 12. 17:58

Python List는 여러 값을 [ ] 안에 담아주는 파이썬의 기본 자료 구조이다.

 

만약, 아래와 같은 리스트가 있는 경우, 이 값들을 어떻게 슬라이싱하는지 예시를 보자.

lst = [1,2,3,4,5,6,7,8,9,10]

 

슬라이싱 하기 위해서는 인덱스라는 개념이 필요하다.

인덱스(Index)는 영어 뜻 그대로 리스트의 값의 순서, 번호이다.

 

예를 들어, 단일의 값(3)의 인덱스는 파이썬의 인덱스는 0부터 시작하기 때문에 2라는 인덱싱을 해주어야 한다.

리스트 마지막 값들은 음수값을 사용하여 아래와 같이 인덱싱 해줄 수도 있다.

lst[0] = 1
lst[1] = 2
lst[2] = 3
lst[3] = 4
....

lst[8] = 9
lst[-2] = 9

lst[9] = 10
lst[-1] = 10

 

이렇게 단일의 값이 아니라, 여러 값들을 리스트에서 뽑아내고 싶다면, 슬라이싱을 이용하면 된다.

 

기본 규칙 : [START : END : STEP]

 - 매우 간단히 시작인덱스, 종료인덱스, 인덱스의 간격을 입력해주면 된다.

 - default로는 제일 처음 인덱스 0, 제일 마지막 인덱스(리스트의 길이) 10, 간격은 1 값으로 들어가기 때문에 이는 생략해줄 수 있다.

lst[::]
# Output : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

여기에서 응용을 해보면 아래와 같이 사용할 수 있다.

lst[:5:]
# Output : [1, 2, 3, 4, 5]

lst[4::]
# Output : [5, 6, 7, 8, 9, 10]

lst[3:10:2]
# Output : [4, 6, 8, 10]

lst[-1:3:-1]
# Output : [10, 9, 8, 7, 6, 5]

 

인덱스를 사용해서 값을 추출하는 것과 반대로, 값을 이용해서 인덱스를 추출하는 방법도 있다.

* 중복된 값이 있을 경우에는 먼저 나오는 값의 인덱스를 반환한다.

l = [0,1,2,2,3,4,5,6,7]
l.index(5)   # 6
l.index(2)   # 2