22.2 리스트의 요소 접근하고 값 할당하기

리스트에 저장된 각 값을 요소(element)라고 합니다. 요소에 접근할 때는 리스트 뒤에 [ ](대괄호)를 사용하며 [ ] 안에 각 요소의 인덱스를 지정해주면 됩니다.

  • 리스트[인덱스]
>>> a = [38, 21, 53, 62, 19]
>>> a[0]    # 리스트의 첫 번째(인덱스 0) 요소 출력
38
>>> a[2]    # 리스트의 세 번째(인덱스 2) 요소 출력
53
>>> a[4]    # 리스트의 다섯 번째(인덱스 4) 요소 출력
19

리스트에 저장된 각 값을 요소(element)라고 합니다. 요소에 접근할 때는 리스트 뒤에 [ ](대괄호)를 사용하며 [ ] 안에 각 요소의 인덱스를 지정해주면 됩니다.

그림 22-1 인덱스로 리스트의 요소에 접근
그림 22 1 인덱스로 리스트의 요소에 접근

리스트에 인덱스를 지정하지 않은 상태는 리스트 전체를 뜻합니다. 따라서 리스트 a를 출력하면 [ ]를 포함하여 리스트 전체가 출력됩니다.

>>> a = [38, 21, 53, 62, 19]
>>> a
[38, 21, 53, 62, 19]

지금까지 리스트에서 인덱스를 양수만 지정했습니다. 그러면 리스트에 음수 인덱스를 지정하면 어떻게 될까요?

>>> a = [38, 21, 53, 62, 19]
>>> a[-1]   # 리스트의 뒤에서 첫 번째(인덱스 -1) 요소 출력
19
>>> a[-5]   # 리스트의 뒤에서 다섯 번째(인덱스 -5) 요소 출력
38

먼저 리스트에 인덱스를 음수로 지정하면 뒤에서부터 요소에 접근하게 됩니다. 즉, -1은 뒤에서 첫 번째, -5는 뒤에서 다섯 번째 요소입니다.

리스트의 양수 인덱스와 음수 인덱스를 그림으로 표현하면 다음과 같은 모양이 됩니다.

그림 22-2 리스트의 양수 인덱스와 음수 인덱스
그림 22 2 리스트의 양수 인덱스와 음수 인덱스

그럼 리스트의 범위를 벗어난 인덱스에 접근하면 어떻게 될까요?

>>> a = [38, 21, 53, 62, 19]
>>> a[5]   # 인덱스 5는 리스트의 범위를 벗어났으므로 에러
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    a[5]
IndexError: list index out of range

리스트의 요소 개수는 5개인데 a[5]와 같이 지정하면 리스트의 범위를 벗어나게 되므로 에러가 발생합니다. 왜냐하면 인덱스는 0부터 시작하므로 마지막 요소의 인덱스는 4이기 때문이죠. 즉, 마지막 요소의 인덱스는 리스트의 요소 개수보다 1 작습니다. 이 부분은 리스트를 사용할 때 자주 틀리는 부분이므로 꼭 기억해두세요.

이제 리스트의 요소에 값을 할당해보겠습니다. 리스트는 [ ]로 요소에 접근한 뒤 값을 할당합니다.

  • 리스트[인덱스] = 값
>>> a = [0, 0, 0, 0, 0]    # 0이 5개 들어있는 리스트
>>> a[0] = 38
>>> a[1] = 21
>>> a[2] = 53
>>> a[3] = 62
>>> a[4] = 19
>>> a
[38, 21, 53, 62, 19]
>>> a[0]
38
>>> a[4]
19

a[0] = 38처럼 [ ]에 인덱스를 지정한 뒤 값을 할당하면 됩니다. 단, 이때도 리스트의 범위를 벗어난 인덱스는 지정할 수는 없습니다.

>>> a[5] = 90
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    a[5] = 90
IndexError: list assignment index out of range