-
[Python] 데이터 타입(Data Type)프로그래밍/Python 2020. 11. 21. 02:51
데이터 타입(Data Type)
리스트 (list)
- 리스트는 다른 프로그래밍 언어의 배열과 비슷한 성질을 갖는 데이터 타입
- 인덱스는 0부터 시작하며, 파이썬에서는 마이너스 인덱스를 지원
- 리스트의 마지막부터 역순으로 값을 참조할 수 있음 (머신러닝 코드에서 슬라이스와 함께 자주 사용됨)
a = [10, 20, 30, 40, 50] # 0, 1, 2 ... 인덱스는 리스트 처음부터 시작 # -1, -2, -3 ... 인덱스는 리스트 마지막부터 시작 print("a[0] == ", a[0], ", a[1] == ", a[1], ", a[2] == ", a[2], ", a[3] == ", a[3], ", a[4] == ", a[4]) print("a[-1] == ", a[-1], ", a[-2] == ", a[-2], ", a[-3] == ", a[-3], ", a[-4] == ", a[-4], ", a[-5] == ", a[-5])
# 결과 a[0] == 10 , a[1] == 20 , a[2] == 30 , a[3] == 40 , a[4] == 50 a[-1] == 50 , a[-2] == 40 , a[-3] == 30 , a[-4] == 20 , a[-5] == 10
- 리스트 각 요소의 데이터 타입을 다르게 해서 생성할 수 있음
- 리스트 안에 또 다른 리스트를 포함할 수도 있음
b = [10, 20, "Hello", [True, .314]] print("b[0] == ", b[0], ", b[1] == ", b[1], ", b[2] == ", b[2], ", b[3] == ", b[3]) print("b[-1] == ", b[-1], ", b[-2] == ", b[-2], ", b[-3] == ", b[-3], ", b[-4] == ", b[-4]) print("b[3][0] == ", b[3][0], ", b[3][1] == ", b[3][1]) print("b[-1][0] == ", b[-1][0], ", b[-1][1] == ", b[-1][1])
# 결과 b[0] == 10 , b[1] == 20 , b[2] == Hello , b[3] == [True, 0.314] b[-1] == [True, 0.314] , b[-2] == Hello , b[-3] == 20 , b[-4] == 10 b[3][0] == True , b[3][1] == 0.314 b[-1][0] == True , b[-1][1] == 0.314
- 빈 리스트 생성 후, append 함수를 이용해 데이터 추가 가능 (머신러닝 코드에서 정확도 계산, 손실 함수 값 저장을 위해 사용)
- 파이썬 리스트에서는 클론(:)을 이용한 '슬라이싱' 기능이 있음
- 슬라이싱을 통해 범위를 지정하여 부분 리스트를 얻을 수 있음 (머신러닝을 위해 반드시 알아야 하는 기능)
c = [10, 20, 30, 40, 50] # c[0:2] => 인덱스 0부터 2-1까지 # c[1:] => 인덱스 1부터 끝까지 # c[:3] => 인덱스 처음부터 3-1까지 # c[:-2] => 인덱스 처음부터 -2-1까지 # c[:] => 인덱스 처음부터 끝까지 print("c[0:2] == ", c[0:2], ", c[1:] == ", c[1:]) print("c[:3] == ", c[:3], ", c[:-2] == ", c[:-2]) print("c[:] == ", c[:])
# 결과 c[0:2] == [10, 20] , c[1:] == [20, 30, 40, 50] c[:3] == [10, 20, 30] , c[:-2] == [10, 20, 30] c[:] == [10, 20, 30, 40, 50]
튜플 (tuple)
- 리스트와 비슷하지만 몇가지 차이점이 존재
- 리스트는 [ ]로 둘러싸지만, 튜플은 ( )로 둘러싼다.
- 리스트 내의 원소를 변경할 수 있지만, 튜플은 변경할 수 없다.
a = (10, 20, 30, 40, 50) print("a[0] == ", a[0], ", a[1] == ", a[1], ", a[2] == ", a[2], ", a[-1] == ", a[-1], ", a[-2] == ", a[-2]) print("a[:3] == ", a[:3], ", a[:-2] == ", a[:-2]) #a[0] = 100 오류 발생
# 결과 a[0] == 10 , a[1] == 20 , a[2] == 30 , a[-1] == 50 , a[-2] == 40 a[:3] == (10, 20, 30) , a[:-2] == (10, 20, 30)
딕셔너리 (Dictionary)
- 딕셔너리는 다른 프로그래밍 언어의 해시(hash) 또는 맵(map)과 구조가 비슷
- 키(key)와 값(value)을 한 쌍으로 해서 데이터를 저장
score = {"Kim" : 90, "Lee" : 85, "Jun" : 95} print("score[Kim] == ", score['Kim'], ", score[Lee] == ", score['Lee'], ", score[Jun] == ", score['Jun'])
# 결과 score[Kim] == 90 , score[Lee] == 85 , score[Jun] == 95
score['Han'] = 100 # 새 원소 추가 # 딕셔너리는 입력한 순서대로 데이터가 들어가는 것이 아니므로 주의! print(score)
# 결과 {'Kim': 90, 'Lee': 85, 'Jun': 95, 'Han': 100}
# 딕셔너리 key, value, item(key, value) print("score key == ", score.keys()) print("score value == ", score.values()) print("score items == ", score.items())
# 결과 score key == dict_keys(['Kim', 'Lee', 'Jun', 'Han']) score value == dict_values([90, 85, 95, 100]) score items == dict_items([('Kim', 90), ('Lee', 85), ('Jun', 95), ('Han', 100)])
문자열 (string)
- 파이썬 문자열은 홀따옴표('') 또는 쌍따옴표("")를 사용해서 생성
- 문자열 내의 각각의 값 또한 문자열로 인식되며, 문자열을 분리하여 list로 반환하는 split() 함수는 머신러닝 코드에서 문자열 데이터 전처리 (pre-process) 하기 위해 자주 사용됨
s = 'A73, CD' s[1] # s[1]은 숫자가 아닌 문자열 '7'
# 결과 '7'
s = s + ', EFG' s
# 결과 'A73, CD, EFG'
# split() 함수는 특정 seperator를 기준으로 문자열을 분리하여 list 리턴 sp = s.split(',') print(sp)
# 결과 ['A73', ' CD', ' EFG']
Useful Functions
- type() : 입력 데이터의 데이터 타입을 알려주는 함수
- len() : 입력 데이터의 길이(요소의 개수)를 알려주는 함수
- size() : 입력 데이터의 모든 원소의 개수를 알려주는 함수
import numpy as np a = [10, 20, 30, 40, 50] b = [10, 20, 30, 40, 50] c = {"Kim" : 90, "Lee" : 80} d = 'Seoul, Korea' e = [[100, 200], [300, 400], [500, 600]] print(type(a), type(b), type(c), type(d), type(e)) print(len(a), len(b), len(c), len(d), len(e)) print(np.size(a), np.size(b), np.size(c), np.size(d), np.size(e))
# 결과 <class 'list'> <class 'list'> <class 'dict'> <class 'str'> <class 'list'> 5 5 2 12 3 5 5 1 1 6
- list() : 입력 데이터를 리스트로 변환하여 리턴하는 함수
- str() : 입력 데이터를 문자열로 변환하여 리턴하는 함수
- int() : 입력 데이터(문자열 형태로 입력되는 숫자나 소수점이 있는 숫자)를 정수 형태로 변환하여 리턴하는 함수
s = 'Hello' d = {"Kim" : 90, "Lee" : 80} print(list(s), list(d.keys()), list(d.values()), list(d.items())) print(str(3.14), str('100'), str([1, 2, 3])) print(int('100'), int(3.14))
# 결과 ['H', 'e', 'l', 'l', 'o'] ['Kim', 'Lee'] [90, 80] [('Kim', 90), ('Lee', 80)] 3.14 100 [1, 2, 3] 100 3
참고
www.youtube.com/playlist?list=PLS8gIc2q83OjStGjdTF2LZtc0vefCAbnX
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 파이썬 문법 정리 (0) 2022.01.22 [Python] 넘파이(Numpy) (0) 2020.11.23 [Python] 클래스, 예외처리 (0) 2020.11.21 [Python] 함수, 람다 (0) 2020.11.21 [Python] 조건문, 반복문 (0) 2020.11.21