Q. 숫자 100개를 한번에 다루려고 한다.
<=> 하나의 변수에 숫자 100개를 저장하고 싶다. 어떻게 해야할까?
A. 연속형 데이터 타입을 사용하자!
- 연속형 데이터란, 하나의 변수가 하나의 데이터를 가지고 있던 숫자형 데이터와 달리, 여러개의 데이터를 하나의 변수에 가지고 있는 데이터 타입이다.
- 연속형 데이터 타입에는 리스트(List), 튜플(Tuple), 문자열(String)이 있다. (문자열을 문자들의 나열로 인식하기 때문에, 연속형 데이터이다.)
- 연속형 데이터의 크기 제한은 없다. 하지만, 사용하는 컴퓨터의 가용 메모리 용량을 인지하며 사용해야 한다.
- 각 연속형 데이터 타입마다 특징이 다르다. 그 특징을 파악하여 용도에 맞는 데이터 타입을 사용하는 것이 중요하다.
(OPTIONAL) 사전(dictionary) 타입은 associative array라고 불리며, 흔히 알고있는 Hash table 구조이다.
리스트(List)
- 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다. (나열)
- 파이썬에서 [ 와 ]를 이용하여 표현한다. e.g. [1, 2, 3]
- 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
- 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다. ex. 튜플인 경우
2x2 행렬 표현 ( 2차원 리스트 ) 리스트 안에 리스트, 리스트가 있는 것
Indexing (확장하면 searching)
- 연속형 데이터들은 하나의 변수에 여러가지 데이터를 가지기 때문에 여러 데이터를 접근하는 방법이 필요하다.
어떤 데이터가 어디에 있는지 알고 있는 목차 정보가 있기 때문에 가능 (이래서 인덱스가 필요)
- 이를 위해 indexing이라는 기법이 있다. 말그대로 index를 통해 접근(access)하는 방법이다. (어떤 원소가 몇 번째에 있는지 알기 위해서)
- 리스트의 index는 맨 앞부터 0으로 시작하며, 1씩 증가하는 정수 index를 사용한다.
파이썬에서 인덱싱을 하는 방법은 대괄호를 쓰고, 리스트 0을 쓰면 이제부터 첫번째는 0인 것.
0부터 시작해서 0층이 있는 것.
ex)
In L = [1, 2, 3, 4, 5]
L
Out [1, 2, 3, 4, 5]
# L의 첫번째 원소
In L [0] #index 0
Out 1
e.g. [1, 2, 3]이면 첫번째 원소는 index가 0이고, 두번째 원소는 index가 1이다.
- 파이썬에서는 음수 index도 제공하는데, 이는 뒤쪽부터 접근할 수 있는 방법이다.
# L의 5번째 원소
In L [4] #index 5
Out 5
# L의 마지막 원소
In L [-1] # L [4] 다섯번째에서 마지막이기 때문
Out 5
e.g L = [1, 2, 3]이면 L[0]은 1이고, L[2]는 L[-1]이며 3이다.
In len[L] #list의 길이
Out 5
# 전체길이가 5인데 다섯 번째 원소가 4다.
인덱스는 전체길이 -1 이다.
In L [ len (L)-1 ]
Out 5
#그래서 뒤에를 생략하면 맨 뒤가 된다.
In L [ -1 ] # 실제로 길이에서 -1한 것과 같다.
Out 5
****가장 중요 (0부터 시작한 것을 잊지말자)
In L [ -3 ] # L [ len(L)-3 ] == L [2] -> 3번째 원소 == 3
= 뒤에서 세번째라는 의미
# indexing 을 이용한 연산, L의 첫번째, 두번째 원소를 가져다가 더한다.
In L [0] + L[1]
Out 3
e.g. [1, 2, 3]이면 뒤에서 첫번째(맨 마지막)원소는 index가 -1이고, 뒤에서 두번째 원소는 index가 -2이다.
- index를 통해 접근하는 방법은 해당 변수이름에 []를 사용하며, []안에 index를 넣어서 접근할 수 있다.
List of List
In
L2 = [1, [2, 3], 5]
L2
Out
[1, [2, 3], 5]
In # L2에서 2에 접근하기 위해 indexing을 해보자.
L2 [1] [0] #두번째 원소의 첫번째 원소
# L2 [1] #[0]
# [2, 3] [0]
Out
[2, 3]
Slicing ***
전체 리스트의 일부를 자르는 것.
슬라이싱은 리스트와 비슷한 구조인 numpy array와 pandas series, dataframe에도 많이 이용된다.
리스트의 index와 ;을 사용해서 슬라이싱을 할 수 있다.
슬라이싱은 콜론: 을 써서 가능하다
In
L = [1, 2, 3, 4, 5]
L
In
# L의 첫번째부터 index2까지 자르기
L [ 0 : 2 ] # [1, 2] # L [0], L [1]
Out
[ 1, 2 ]
-> 슬라이싱에서는 맨 마지막 숫자를 포함하지 않는다.
**뒤에 있는 숫자 하나가 생략된다.
예를 들어 0, 2이라면 2는 포함되지 않는 것이다, 2 하나 전까지
In
# L의 두번째부터 index4까지 자르기
L [ 1 : 4 ] # L [ 1 ], L [ 2 ] , L [ 3 ] -> 맨 마지막 숫자 포함 안하기 때문
Out
[ 2, 3, 4 ]
시작 index를 생략하면, 자동으로 index는 0이 된다.
L [ : 3 ] = L [ 0 : 3 ]
-> 앞에서부터 3개를 부를래
Out
[ 1, 2, 3 ]
끝 index를 생략하면, 자동으로 index는 리스트의 길이가 된다.
왜 리스트의 길이일까?
L[1 : leng(L)-1]
L [1 : -1]
이거는 안된다
L[1 : leng(L)] == L[1 : ]
'자기계발(경영)' 카테고리의 다른 글
[회계관리 2급] 1달 반 안에 2급 자격증 따기! 2. 재무상태표, 손익계산서 작성기준 (0) | 2024.04.04 |
---|---|
[회계관리 2급] 1달 반 안에 2급 자격증 따기! 1. 기본상식 다지기 (0) | 2024.04.02 |
python data type _문자열(String) (0) | 2022.04.17 |
python data type _숫자데이터(numeric data type) (0) | 2022.04.17 |
python data type _data type이란 (0) | 2022.04.17 |