본문 바로가기
[Python]/python 개념

리스트의 인덱싱과 슬라이싱

by 코드몽규 2022. 1. 21.
반응형

리스트의 인덱싱

리스트 역시 문자열처럼 인덱싱을 적용할 수 있다. 먼저 a 변수에 [1, 2, 3] 값을 설정한다.

>>> a = [1, 2, 3]
>>> a
[1, 2, 3]

a[0]은 리스트 a의 첫 번째 요소값을 말한다.

>>> a[0]
1

파이썬은 숫자를 0부터 세기 때문에 a[0]이 리스트a의 첫번째 요소임을 명심하자. 


이번에는 다음 예처럼 리스트 a를 숫자 1, 2, 3과 또 다른 리스트인 ['a', 'b', 'c']를 포함하도록 만들어 보자.

>>> a = [1, 2, 3, ['a', 'b', 'c']]

다음 예를 따라 해보자.

>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']
>>> a[3]
['a', 'b', 'c']

 

리스트 a를 하나씩 풀어보면 a[0] = 1, a[1] = 2, a[2] = 3, a[3] = ['a', 'b', 'c'] 이다. 

예상한 대로 a[-1]은 마지막 요솟값 ['a', 'b', 'c']를 나타낸다. 

 

그렇다면 여기에서 리스트 a에 포함된 ['a', 'b', 'c'] 리스트에서 'a' 값을 인덱싱을 사용해 끄집어낼 수 있는 방법은 없을까? 다음 예를 보자.

ex)a

>>> a[-1][0]
'a'

ex)b,c

>>> a[-1][1]
'b'
>>> a[-1][2]
'c'

삼중 리스트에서 인덱싱하기

조금 복잡하지만 다음 예를 따라 해 보자.

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

리스트 a 안에 ['a', 'b', ['Life', 'is']] 리스트가 포함되어 있고, 그 리스트 안에 다시 ['Life', 'is'] 리스트가 포함되어 있다. 삼중 구조의 리스트이다.

이 경우 'Life' 문자열만 끄집어내려면 다음과 같이 해야 한다.

>>> a[2][2][0]
'Life'

위 예는 리스트 a의 세 번째 요소인 리스트 ['a', 'b', ['Life', 'is']]에서 세 번째 요소인 리스트 ['Life', 'is']의 첫 번째 요소를 나타낸다.

이렇듯 리스트를 삼중으로 중첩해서 쓰면 혼란스럽기 때문에 자주 사용하지는 않지만 알아두는 것이 좋다.


리스트의 슬라이싱

문자열과 마찬가지로 리스트에서도 슬라이싱 기법을 적용할 수 있으며, 동일하게 적용된다.

 

>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]
>>> c = a[2:]
>>> b
[1, 2]
>>> c
[3, 4, 5]

위의 예시처럼 리스트에서의 슬라이싱은 문자열에서의 슬라이싱과 똑같이 적용되는 것을 확인 할 수있다.

[중첩된 리스트에서 슬라이싱하기]
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2]
['a', 'b']

위 예에서 a[3]은 ['a', 'b', 'c']를 나타낸다. 따라서 a[3][:2]는 ['a', 'b', 'c']의 첫 번째 요소부터 세 번째 요소 직전까지의 값, 즉 ['a', 'b']를 나타내는 리스트가 된다.

반응형

댓글