본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 기초] 리스트 자료형① - 개념, 인덱싱, 슬라이싱

by 석세상 2022. 5. 8.
반응형

지금까지 우리는 앞에서 변수라는 것만 사용해서 자료를 가지고 있었다. 그 외 함수나 명령어 사칙연산 등을 배웠지만 자료형태에 대해서 배운 것은 문자형, 숫자형 말고는 딱히 없다.

 

지금부터 배우는 자료형이라는 것은 우리가 데이터를 수집하면 그걸 어느 장소에 어떤 형태로 저장해두어야 한다. 정확히는 무슨뜻인지는 몰라도 우리가 흔히 말하는 데이터베이스라는 곳이 데이터를 모아두는 장소이다. 그럼 이 공간에 어떤 형태로 데이터를 저장해 둘거냐라는 것도 결정해야 하는데 파이썬은 그런 자료를 저장하는 형태 중 하나가 리스트라고 생각하면 된다. 

 

예전에는 테이블 형태라는 자료 저장형태가 대부분을 차지했는데 빅데이터 시대가 오면서 점점 더 다양한 형태의 데이터를 다루면서 저장형태도 여러가지 형태가 사용되어졌다. 과거에도 여러가지 자료 저장형태가 있었지만 주로 정형 데이터, 즉 형태가 정해져 있는 데이터를 주로 다뤘기 때문에 하나의 형태만 알고 있어도 큰 문제가 없었다. 가장 대표적인 형태가 테이블 형태인데 쉽게 이해하려면 우리가 엑셀에서 가로, 세로 형태의 자료를 구성하는 것이 테이블 형태라고 생각하면 된다.

 

 

 

리스트 자료형이란?

그럼 리스트는 무엇인지에 대해 알아보면 리스트는 여러가지 자료 형태를 담을 수 있다. 숫자형, 문자형, 테이블 등 자료의 형태에 구애받지 않고 한데 묶어서 저장할 수 있는 자료 형태이다.

 

리스트 생성 및 사용방법

그렇다면 리스트는 어떻게 만들고, 어떻게 사용할까? 기본 문법은 다음과 같다. []안에 요소들이 들어가며 각 요소들은 숫자, 문자, 테이블 등 여러가지 형태의 자료를 담을 수 있다.

리스트명 = [요소1, 요소2, 요소3, ...]

 

리스트에서 인덱싱과 슬라이싱

우리는 지난 번 앞에서 문자열의 인덱싱과 슬라이싱에 대해서 배웠다. 그렇다면 리스트의 경우에 인덱싱과 슬라이싱은 어떻게 적용되는지 살펴보자. 

 

[인덱싱 예시]

리스트는 대괄호 안에 있는 자료이고, 그 안에 컴마를 기준으로 요소 하나하나를 구분하는데 list1[0]은 첫번째 요소를 가져오라는 의미로 요소1에 속하는 5가 출력된다. 앞에서 얘기했듯 파이썬은 0부터 순서를 세기 때문에 [0]은 첫번째 요소를 의미한다.

[입력값]
list1 = [5, 6, 7, 8]
list1[0]

[결과출력]
5


다음과 같이 리스트값을 이용한 연산도 가능하다. 첫번째 요소인 5와 두번째 요소인 6을 합한 11이 결과로 출력
[입력값]
list1[0] + list1[1]

[결과출력]
11


또한 리스트의 요소에는 리스트 형태로도 들어갈 수 있는데 리스트로 된 요소를 추출하면 해당 요소인 리스트가 통째로 추출된는걸 볼 수 있다.
[입력값] [8, 9]는 리스트 안에 요소로 리스트가 들어있는 형태이다
list1 = [5, 6, 7, [8,9]]
list1[3]

[출력결과]
[8,9]

※ 리스트안에 리스트의 요소는 list[3][0] 이라고 쓰면 4번째 요소인 [8,9]인 리스트 안의 첫번째 요소인 8 추출하고 리스트 안에 여러개의 리스트가 있는 경우는 위의 문법을 확장해서 사용하면 된다.

 

[슬라이싱 예시]

리스트 슬라이싱의 경우도 문자열 슬라이싱과 기본적인 개념은 동일하다. 범위를 잡아 여러개의 요소를 추출하는 것이다. 단지 리스트라는 형태에 대한 슬라이싱이기 때문에 실제 나오는 결과를 눈으로 익혀두는게 좋다. 개념이 동일하다고 같은 결과가 나오지 않을 수도 있기 때문이다. 코딩은 머릿속에서 생각한 것과 다른 결과가 나올 수 있기 때문에 항상 결과를 확인하는 습관이 중요하다. 예제를 보면 2번째부터 4번째 요소를 출력하라는 명령문으로 결과는 아래와 같이 나타난다. 문자열 슬라이싱의 경우는 좀 더 직관적으로 우리가 예상하는것과 유사하게 결과를 생성하지만 리스트의 경우는 머릿속에 생각하는 것과 다르게 나타날 수 있다.

[입력값]
list1 = [5, 6, 7, [8,9]]
list1[1:3]

[출력결과]
[6,7,[8,9]]

 

728x90
반응형

댓글