ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

     

    머신러닝/딥러닝 강의

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

    www.youtube.com

    '프로그래밍 > 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

    댓글

Designed by Tistory.