본문 바로가기
파이썬 - 기초

[파이썬] 컬렉션 | 리스트(List) 인덱싱 & 슬라이싱

by myoongs 2025. 9. 14.

파이썬 기본 자료형에 정수(int), 실수(float), 불린(boolean), 문자열(str)이 있다면 컬렉션에는 튜플(tuple), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있다. 

컬렉션은 여러 아이템/값을 한 곳에 묶어 놓을 것이라고 생각하면 된다. 

이 중 리스트가 가장 유연해서 가장 유용하게 사용된다.

 

리스트란?

리스트를 표현할 때는 [ ] 를 사용한다. 

[ ] 안에 다양한 데이터 타입을 저장할 수 있으며, 같은 리스트 안에 다른 데이터 타입이 섞여 들어가도 된다.

list1 = [1, 2, 1.5555, '과일', 'horse', [1,2,3,['blue','red']], {'a':'apple', 'b':'banana'}]

 

리스트는 시퀀스(sequence)이며, 순서가 있어서 리스트에 담긴 값은 모두 고유의 인덱스를 가진다.

즉, 인덱싱과 슬라이싱이 가능하다.

 

리스트 인덱싱

리스트에서 특정 값을 추출하는 방법은 여러 가지가 있다.

1. [인덱스] 사용

리스트에 저장된 값은 순서가 있다. 이 순서 혹은 값의 위치를 '인덱스'라고 부른다.

인덱스는 0부터 시작된다 (왼쪽부터 오른쪽으로 움직임).

마이너스 인덱스도 있는데, 리스트의 가장 끝 값을 -1로 잡고 좌측으로 이동하며 -2, -3 ... 으로 부른다. 

 

 

인덱스로 리스트의 특정 값을 추출하려면 아래와 같이 코드를 쓰면 된다

리스트이름[인덱스] 

list1 = [1, 2, 1.5555, '과일', 'horse', [1,2,3,['blue','red']], {'a':'apple', 'b':'banana'}]

# list1의 첫번째 인덱스의 값 추출
list1[0]
>>> 1

# list1의 마지막 인덱스의 값 추출
list[-1]
>>> {'a':'apple', 'b':'banana'}

 

2. .index('값') 사용

특정 값이 위치한 인덱스를 모른다면 index() 메서드를 사용해서 그 값의 인덱스를 찾을 수 있다.

리스트명.index('값') 

list1.index('과일')
>>> 3

 

3. 복합적인 인덱스 

가끔 리스트 안에 리스트나 다른 종류의 컬렉션이 저장되어 있고 그 컬렉션 안에서 특정 값을 불러와야할 때도 있다.

리스트 안의 컬렉션 안의 값도 각자 인덱스가 있기 때문에 [ ][ ] 로 나열해서 불러올 수 있다.

예를 들어, list1에서  'blue'를 추출하려면 list1에서 blue가 저장된 리스트의 인덱스와 해당 리스트에서의 blue의 인덱스를 알아야한다.

'blue'의 인덱스는 아래처럼 찾아낼 수 있다.

a) list1에서의 blue가 담기 리스트의 인덱스 (5)

b) 해당 리스트에서 blue가 담긴 리스트의 인덱스 (3)

c) 그 안에서의 blue의 인덱스 (0)

따라서, list1 에서 blue 를 찾기 위해서는 list1[5][3][0] 을 쓰면 된다

list1[5][3][0]
>>> 'blue'

 

딕셔너리의 경우 key와 value 로 이루어져 있으며, key 값을 사용하여 인덱싱이 가능하다.

예를 들어, list1의 'banana'를 추출하려면 'banana'의 키값과 'banana'가 담긴 디셔너리의 인덱스를 알아야한다.

즉, list1[6]['b'] 를 해주면 된다.

list1[6]['b'] # list1의 6번째 인덱스의 값에서 키가 'b'인 값을 추출 
>>> 'banana'

 

 

리스트 슬라이싱 

인덱싱이 하나의 값을 추출하는거라면 슬라이싱은 여러 값을 꺼낼때 쓴다.

방법은 인덱싱과 유사하다. 다만, 추출할 인덱스 범위를 지정한다는 점에서 다르다.

공식은 다음과 같다:

리스트명[시작점 : 끝점 : 스텝]

- 시작점: 추출할 인덱스 시작점 

- 끝점: 추출할 인덱스의 다음 인덱스 (끝점의 값은 포함되지 않음)

- 스텝: 지정하지 않을 경우 1 단위로 추출함.

** 맨처음부터, 혹은 맨끝까지 추출할 때는 인덱스 번호를 쓰지 않고 공란으로 둬도 됨

    (e.g. list1[ : 3] 은 처음부터 2번째 인덱스까지 추출을 의미함)

# 인덱스 0~1까지의 값 추출
print(list1[0:2])
print(list1[:2]) # 처음부터 2번 인덱스

 

# 마지막 2개의 값 추출
print(list1[-2:]) # -2에서 끝까지 
print(list1[5:7]) # 5~6까지
print(list1[5:]) # 5번에서 끝까지

 

# 처음부터 끝까지, 2 steps로 
list1[::2] # 인덱스 0,2,4,6 번째 값 추출

 

반응형