본문 바로가기

파이썬

04/26 파이썬 4 - 리스트, 인덱싱, 슬라이싱

1) 리스트 생성

 

내가 좋아하는 게임의 목록을 변수를 통해 저장해보자.

 

game1 = '리그오브레전드'
game2 = '오버워치'
game3 = '배틀그라운드'

 

위와 같은 방법으로 좋아하는 게임이 생길 때마다 변수를 새로 만들고 저장하여 관리할 수 있다.

만약 내가 좋아하는 게임이 100가지가 넘는다면 어떻게 될까?

난 변수 100개를 만들고 변수 100개의 값을 얻기 위해 파이썬 프롬프트에 일일이 변수명을 입력할 것이다.

 

이런 상황에서 빛을 발하는 것이 리스트(list)이다.

좋아하는 게임 목록을 리스트로 만들어보자.

 

game = ['리그오브레전드', '오버워치', '배틀그라운드']

 

위와 같은 방법으로 아주 효율적으로 좋아하는 게임의 목록을 리스트에 넣고 관리할 수 있다.

만약 게임의 개수가 100개여도 100개의 변수명을 만드는 것이 아니라 1개의 변수만을 만들면 된다.

 

리스트를 만들려면 위와 같이 변수를 만들고 '['과 ']' 사이에 데이터를 쉼표로 구분해서 넣기만 하면 된다.

 

이제 리스트를 만들었다. 이제 리스트의 데이터 값을 불러오기 위해서는 어떻게 해야 할까?

저번에 했던 문자열의 인덱싱과 비슷한 원리로 파이썬 리스트의 인덱스는 0부터 시작한다.

 

>>>game[0]
'리그오브레전드'
>>>game[2]
'배틀그라운드'

 

위 코드처럼 리스트에 있는 데이터 값을 불러올 수 있다.

리스트에 '리그오브레전드', '오버워치', '배틀그라운드' 순으로 데이터가 저장됐으므로 'game [0]'이라는 명령어를 입력하면 '리그오브레전드'를, 'game[2]'라는 명령어를 입력하면 '배틀그라운드'를 불러오는 것이다.

 

참고로 리스트에는 앞의 글에서 소개한 기본 데이터 타입(문자열, 정수, 실수) 모두를 넣을 수 있다.

 

mygame = []

 

위와 같이 리스트에 아무 데이터를 넣지 않으면 빈 리스트가 만들어진다.

 

2) 리스트의 인덱싱

리스트도 문자열과 마찬가지로 양수, 음수 인덱싱 모두 가능하다.

 

리스트의 인덱싱

위 사진과 같이 인덱싱을 하여 데이터 값을 불러올 수 있다. 

 

>>>game[-1]
'배틀그라운드'
>>>game[-2]
'오버워치'
>>>game[-3]
'리그오브레전드'

 

위 코드는 음수를 이용하여 데이터 값을 불러온 예시이다.

 

3) 리스트의 슬라이싱

 

내가 좋아하는 음식을 1순위부터 10순위까지 정리해놓은 리스트를 만들어보자.

 

1순위 : 회

2순위 : 간장게장

3순위 : 소고기

4순위 : 치킨

5순위 : 삼겹살

6순위 : 피자

7순위 : 탕수육

8순위 : 짬뽕

9순위 : 짜장면

10순위 : 갈비 해장국

 

순위는 정했다. 데이터를 순위에 맞게 정리하여 리스트에 넣어보자.

위 데이터는 순위와 음식 이름으로 구성돼있다. 파이썬의 리스트에는 이미 각 인덱스 자체가 순서를 의미하므로 순위 값은 저장할 필요 없이 1순위부터 10순위까지 순서대로 음식 이름을 리스트에 저장하면 된다.

 

myfood = ['회', '간장게장', '소고기', '치킨', '삼겹살', '피자', '탕수육', '짬뽕', '짜장면', '갈비 해장국']

 

이제 리스트를 만들었으므로 손쉽게 내가 좋아하는 음식 목록을 관리할 수 있다.

 

>>>print("음식 5순위:", myfood[4])
음식 5순위: 삼겹살
>>>

 

5번째로 좋아하는 음식의 이름을 알고 싶다면 위와 같이 코드를 작성하면 된다.

 

그럼 1순위부터 5순위까지의 음식 리스트를 생성하여 이름을 알고 싶다면 어떻게 해야 할까?

 

이때 사용하는 기능이 슬라이싱이다.

 

>>>myfood_top5 = myfood[0:5]
>>>myfood_top5
['회', '간장게장', '소고기', '치킨', '삼겹살']
>>>

 

이전 글에서 소개한 문자열의 슬라이싱처럼 리스트의 인덱스를 이용해 위와 같이 코드를 작성하여 쉽게 1순위부터 5순위까지의 음식 리스트를 생성할 수 있다.

 

쉽게 정리하면 슬라이싱은 "[시작 인덱스: 끝 인덱스]"와 같은 형태로 표현할 수 있다.

이때, 문자열의 슬라이싱처럼 시작 인덱스 또는 끝 인덱스에 해당하는 값에 아무 값도 넣지 않으면 자동으로 리스트의 처음 또는 끝을 인덱싱 해준다.