인덱싱
앞서 '리스트 이해하기'에서도 살펴보았다시피, 리스트에서 하나의 요소를 인덱스 연산자를 통해서 참조(접근)하는 것을 인덱싱(indexing)이라고 한다. 인덱스는 정수이며, 첫 요소는 1이 아닌 0부터 시작한다는 점에 유의해야 한다.
shopping_list = ['apple', 'banana', 'carrot', 'date']
print(shopping_list[0]) # apple
파이썬에서는 음수 인덱스도 가능하다. 항상 리스트의 마지막 요소는 항상 -1이기 때문에 리스트의 마지막 요소에 접근할 때 굉장히 편리하다. 위 예제에서 shopping_list[-1]은 리스트의 마지막 요소를 나타내며 shopping_list[-3]은 마지막에서 세 번째 요소를 나타낸다.
참고로 리스트의 크기를 넘어선 인덱스를 사용하면 IndexError가 발생하니 주의하도록 하자.
슬라이싱
슬라이싱 이해하기
리스트 안에서 범위를 지정하여 원하는 요소를 선택하고자 할 때는 슬라이싱(slicing) 연산을 사용하면 된다. 문법은 아래와 같이 콜론(:)으로 시작 인덱스와 끝 인덱스를 지정해주면 된다.
리스트[start : end]
이렇게 하면 start 인덱스에 있는 요소부터 (end-1) 인덱스에 있는 요소까지 선택된다.
myList = [0, 1, 2, 3, 4, 5, 6, 7]
myList[3:6] # [3, 4, 5]
슬라이싱 연산은 요구된 요소를 포함하는 부분 리스트를 추출해 새로운 리스트를 반환한다. 원본 리스트를 바꾸지 않고 복사본을 생성하는 것이다.
만약 슬라이싱 연산에서 시작 인덱스를 생략하면 기본적으로 0으로 간주되고, 종료 인덱스를 생략하면 리스트의 끝 인덱스로 간주된다. 시작과 종료 인덱스를 모두 생략하는 경우에는 리스트의 모든 요소를 포함한 전체 리스트의 복사본이 반환된다. 예제를 통해 확인해 보자.
my_list = [1, 2, 3, 4, 5]
my_list[:3] # [1, 2, 3]
my_list[2:] # [3, 4, 5]
my_list[:] # [1, 2, 3, 4, 5]
슬라이싱에 값 대입하기
슬라이싱에 값을 대입하는 것도 가능하고, 리스트의 크기를 변경하는 것도 가능하다. 공백 리스트로 모든 요소들을 대체하여 리스트의 내용을 완전히 삭제하는 것도 가능하다.
letters = ["a", "b", "c", "d", "e", "f", "g"]
letters[1:3] = ["B", "C"]
print(letters) # ['a', 'B', 'C', 'd', 'e', 'f', 'g']
letters[1:3] = []
print(letters) # ['a', 'd', 'e', 'f', 'g']
슬라이싱에 스텝 지정하기
슬라이싱을 할 때 스텝을 지정할 수도 있다. 건너 뛸 값을 지정하여 새로운 리스트를 반환하게 할 수 있는 것이다. 전체적인 구조는 아래와 같다.
리스트[ start : end : step]
numbers[2 : 7 : 2]에서 첫 번째 2는 시작 인덱스, 두 번째 7은 종료 인덱스, 세 번째 2는 스텝을 나타낸다. 즉, 인덱스 2부터 시작하여 2씩 증가하면서 (7-1)번째 요소까지의 요소들을 추출하는 것이다.
마지막 스텝 부분에 음수를 지정하면 역순으로 스텝을 밟으며 요소들을 추출한다. 따라서 어떤 리스트를 역순으로 재정렬한 새로운 리스트를 쉽게 만들 수도 있다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1]
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 리스트 비교, 정렬 (0) | 2025.01.15 |
---|---|
[Python] 파이썬 리스트의 기초 연산들 (요소 추가, 삭제, 삽입 등) (0) | 2025.01.15 |
[Python] 파이썬 시퀀스 데이터 타입 (0) | 2025.01.14 |
[Python] 파이썬 리스트 이해하기 (0) | 2025.01.14 |
[Python] 달력 출력 프로그램 (0) | 2025.01.10 |