프로그래밍/Python

[Python] 데이터 타입(Data Type)

노력의천재 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

 

머신러닝/딥러닝 강의

머신러닝과 딥러닝의 동작원리와 이러한 알고리즘을 파이썬으로 구현한 강의 자료입니다.

www.youtube.com