파이썬 Basic - 데이터타입

Soonyoung Kim·2021년 1월 6일
0

데이터 타입

1. List(리스트)

  • 다른 프로그래밍 언어의 '배열(array)'과 비슷한 성질을 갖는 데이터타입
  • 리스트 인덱스는 0부터 시작하며, 파이썬에서는 마이너스(-) 인덱스를 지원하여 리스트의 마지막부터 역순으로 값을 참조할 수 있다.
a = [10, 20, 30, 40, 50]

# 0, 1, 2 ... 처음부터 시작
print( 'a[0]=', a[0], 
      ',a[1]=', a[1],
      ',a[2]=', a[2],
      ',a[3]=', a[3],
      ',a[4]=', a[4])

a[0]= 10 ,a[1]= 20 ,a[2]= 30 ,a[3]= 40 ,a[4]= 50

# -1, -2... 마지막부터 시작
print( 'a[-1]=', a[-1], 
      ',a[-2]=', a[-2],
      ',a[-3]=', a[-3],
      ',a[-4]=', a[-4],
      ',a[-5]=', a[-5])

a[-1]= 50 ,a[-2]= 40 ,a[-3]= 30 ,a[-4]= 20 ,a[-5]= 10

  • 리스트는 각 요소의 데이터 타입을 다르게 해서 생성할 수 있다.
  • 리스트 안에 또 다른 리스트를 포함할 수 있다.
b = [10, 20, 'Hello', [True, 3.14]]

print( 'b[0]=', b[0], 
      ',b[1]=', b[1],
      ',b[2]=', b[2],
      ',b[3]=', b[3])

b[0]= 10 ,b[1]= 20 ,b[2]= Hello ,b[3]= [True, 3.14]

# 리스트 안에 리스트 확인
print( 'b[3][0]=', b[3][0], 
      ',b[3][1]=', b[3][1])

b[3][0]= True ,b[3][1]= 3.14

  • 파이썬 리스트에는 콜론(:)을 이용한 '슬라이싱' 기능이 있음. 슬라이싱을 이용하면 범위를 지정해 부분 리스트를 얻을 수 있다.
c= [10, 20, 30, 40, 50]

# c[0:2] - 인덱스 0부터 2-1까지
# c[1:] - 인덱스 1부터 끝까지
# c[:] - 인덱스 처음부터 끝까지
# c[:4] - 인덱스 처음부터 4-1까지

print(  'c[0:2] = ',c[0:2],
      '\nc[1:] = ', c[1:],
      '\nc[:] = ', c[:],
      '\nc[:4] = ', c[:4])

c[0:2] = [10, 20]
c[1:] = [20, 30, 40, 50]
c[:] = [10, 20, 30, 40, 50]
c[:4] = [10, 20, 30, 40]

  • 빈 리스트 생성 후, append method를 이용하여 데이터 추가(머신러닝 코드에서 정확도 계산, 손실함수 값 저장하기 위해 사용)
d = [ ]
d.append(100)
d.append(200)
d.append(300)

print(d)

[100, 200, 300]


2. Tuple(튜플)

  • 튜플은 리스트와 거의 비슷하며 다른점은 다음과 같음
    - 리스트는 []으로 둘러싸지만 튜플은 ()으로 둘러싼다.
    • 리스트 내의 원소를 변경할 수 있지만 튜플은 변경할 수 없다.
t_a = (10,20,30,40,50) #튜플
l_a = [10,20,30,40,50] #리스트

# 튜플도 리스트와 동일하게 표현
# 0, 1, 2 ... 처음부터 시작
print( 't_a[0]=', t_a[0], 
      ',t_a[1]=', t_a[1],
      ',t_a[2]=', t_a[2],
      ',t_a[3]=', t_a[3],
      ',t_a[4]=', t_a[4])
      
#튜플은 내부 원소 변경 불가능
t_a[0] = 100

TypeError: 'tuple' object does not support item assignment

  • 튜플 내의 원소를 변경 할 수 없다.
print(t_a)

(10, 20, 30, 40, 50)

  • t_a 튜플은 변경 되지 않은 것을 확인
l_a[0] = 100

[100, 20, 30, 40, 50]

  • l_a 리스트는 0번째 인덱스 값이 변경 된 것을 확인

3. Dictionary(딕셔너리)

  • 딕셔너리는 다른 프로그래밍 언어의 '해시(hash)' 또는 '맵(map)'과 구조가 비슷하다.
  • 딕셔너리는 키(key)와 값(value)을 한 쌍으로 해서 데이터를 저장한다.
score = {'KIM':90, 'LEE':85, 'JUN':95} #딕셔너리 생성

print(score)

{'KIM': 90, 'LEE': 85, 'JUN': 95}

print("score['KIM']=", score['KIM']) #원소 접근

score['KIM']= 90

score['HAN'] = 100 #새 원소 추가

print(score)

{'KIM': 90, 'LEE': 85, 'JUN': 95, 'HAN': 100}

#key, value, (key, value)
print("score key ==", score.keys())
print("score values ==", score.values())
print("score items ==", score.items())

score key == dict_keys(['KIM', 'LEE', 'JUN', 'HAN'])
score values == dict_values([90, 85, 95, 100])
score items == dict_items([('KIM', 90), ('LEE', 85), ('JUN', 95), ('HAN', 100)])


4. String(스트링)

  • 파이썬 문자열(string)은 홑따옴표('') 또는 쌍따옴표("")를 사용해서 생성
  • 문자열 내읠 각각의 값 또한 문자열로 인식되며, 문자열을 분리하여 list로 반환하는 split() 함수는 머신러닝 코드에서 문자열 데이터 전처리하기 위해 자주 사용된다.
a = 'A73.C'

print( 'a[0]=', a[0], 
      ',a[1]=', a[1],
      ',a[2]=', a[2],
      ',a[3]=', a[3],
      ',a[4]=', a[4])

a[0]= A ,a[1]= 7 ,a[2]= 3 ,a[3]= . ,a[4]= C

a = a + ", EFG"
a

'A73.CD, EFG'

#split() 메서드는 특정 separator를 기준으로 문자열을 분리하여 list 리턴
b = a.split(',')

print(b)

['A73.CD', ' EFG']


5. Function(함수) - type, len, size

  • type(data) : data의 데이터타입을 확인하는 함수
  • len(data) : data의 데이터의 길이(요소의 개수)를 확인하는 함수
  • size(data) : 모든 원소의 개수를 확인하는 함수

헷갈리는 size와 len

  • size
    - 전체 원소의 갯수!
    - 2x3 배열의 경우, 원소 갯수인 6을 반환!
    - shape, ndim, size는 numpy.ndarray객체의 메서드 : 파이썬 기본 리스트(list)나 문자열에선 사용 불가! (numpy.ndarray 에서만 사용 가능)
  • len
    - len(객체)는 파이썬 내장함수 : 파이썬 기본 리스트(list)나 문자열에도 사용 가능!
    - 첫 번째 차원의 원소(행) 수!
    - 2x3 배열의 경우, 첫 번째 차원의 행수인 2를 반환!
    - [1, 2, 3] 같은 1차원 배열의 경우, shape가 (3, )이므로 첫 번째 차원의 행수인 3을 반환한다고 봐도 될듯.
    출처
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))

<class 'list'> <class 'tuple'> <class 'dict'> <class 'str'> <class 'list'>

5 5 2 12 3

6. Function(함수) - list(), str(), int()

  • list(data) : data를 리스트로 만들어 리턴하는 함수
  • str(data) : data를 문자열로 변환하여 리턴하는 함수
  • int(data) : 문자열 형태로 입력되는 숫자나 소수점이 있는 숫자 등을 정수 형태로 리턴하는 함수
a = 'HELLO'
b = {'kim':90, 'lee':80}

print(list(a), list(b.keys()), list(b.values()), list(b.items()))

['H', 'E', 'L', 'L', 'O']['kim', 'lee']
[90, 80][('kim', 90), ('lee', 80)]

print(str(3.14), str(100), str([1,2,3]), sep='\n')

3.14
100
[1, 2, 3]

print(int('100'), int(3.14),sep='\n')

100
3

profile
Sin prisa, sin pausa.

0개의 댓글