Milky's note

[K-Digital] Python 기초 문법 - Data Type 본문

Python/요약 정리

[K-Digital] Python 기초 문법 - Data Type

밀뿌 2022. 5. 18. 14:49

· 연속형 데이터

연속형 데이터란,

하나의 변수가 하나의 데이터를 가지고 있던 숫자형 데이터와 달리, 여러개의 데이터를 하나의 변수에 가지고 있는 데이터 타입이다.

연속형 데이터의 크기 제한은 없다. 하지만, 사용하는 컴퓨터의 가용 메모리 용량을 인지하며 사용해야 한다.
각 연속형 데이터 타입마다 특징이 다르다. 그 특징을 파악하여 용도에 맞는 데이터 타입을 사용하는 것이 중요하다.
사전(dictionary) 타입은 associative array라고 불리며, 흔히 알고있는 Hash table 구조이다.

 

1) 리스트 (List) [ ]

  • 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다.
  • 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
  • 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다.

  • Indexing이 가능하다.
    Indexing는 List[0]부터 시작한다. (즉, 첫번째 원소는 0)
    음수로도 표현이 가능한데 예를들어 List[-1] 로 나타낸 인덱스는 len(List)-1 이라는 뜻에서 맨 마지막 원소를 뜻한다.
    List = [0,1,2,3]이라고 예시를 들면 
    List[0] => 0, List[-1] => 3 이 된다.

  • Slicing도 가능하다.
    indexing을 범위로 하는 느낌이며 리스트의 일부만 사용하고 싶을 때 쓰는 기법이다.
    List = [0,1,2,3]이라고 예시를 들면
    List[:3] => 첫번째부터 index3까지 자르는 것이기 때문에 List[0], List[1], List[2]가 된다. (시작 index를 생략하면 자동으로 0)
    List[2:] => index2부터 마지막까지 자르는 것이기 때문에 List[2], List[3]이 된다. (끝 index를 생략하면 자동으로 len(L))
    List[::2] => index0부터 마지막까지 2씩 증가하여 자르는 것이기 때문에 List[0], List[2]이 된다. (증감 가능)

관련 함수

# 빈 리스트 L을 만들어서 3, 2, 1 순서대로 원소를 추가
L = []
L.append(3)
L.append(2)
L.append(1)

# 원소를 삭제 
# pop 함수 안에 아무것도 안 써주면 자동으로 맨 뒤에 리스트가 삭제됨
L.pop()

# pop 함수 안에 index를 써주면 해당 원소 값이 삭제
L.pop(2)

# 삭제함수로 remove가 있는데 이 안에는 value 값을 넣어주면 삭제 가능
L.remove('2')

# 원소를 정렬
L.sort() # ascending order
L.sort(reverse=True) # descending order

# 원소의 역수 (정렬은 되지 않고 순서만 뒤집어줌)
L.reverse() 
L[::-1] #증감을 -1로 해주어서 뒤에서부터 출력되게 해주는 방식

 

2) 튜플 (Tuple) ( )

  • 리스트는 생성 후에 변경이 가능하고(mutable) 튜플은 생성 후에 변경이 불가능하다.(immutable)
  • 원소변경이 불가능해서 데이터 수정 자체를 하지 않는 경우 실수를 방지할 수 있다.
  • List와 똑같이 Indexing, Slicing가 가능하다.
    T = (0,1,2)이라고 예시를 들면 
    T[0] => 0, T[-1] => 2 가 된다.
    T[:1], T[1:] 등등 모두 다 가능

 

3) 집합 (Set) { }

  • 공집합을 생성할 때는 반드시 set()으로 생성해야 한다. {}로 생성하면 빈 사전이 생성된다.
  • 집합의 연산자인 교집합, 합집합, 차집합을 모두 지원한다.
  • 집합의 특징이 2가지 있는데, 이 특징이 리스트와의 차이점이라 사용한다. 첫번째 특징이 집합 자료형을 사용하는 주된 이유이다.
    1) 집합은 원소의 중복을 허용하지 않는다. 즉, 원소의 종류를 나타내기 좋다.
    2) 집합은 원소의 순서가 존재하지 않는다. indexing, slicing의 사용이 불가하다.

관련 함수

# 교집합
s1 & s2 
# 또는
s1.intersection(s2) # s1과 s2의 자리를 바꿔서 당연히 같다.
# s2.intersection(s1)

# 합집합
s1 | s2
# 또는
s1.union(s2)
# s2.union(s1)

# 차집합
s1 - s2
s2 - s1 # 당연히 다른 결과가 출력

# 집합에 원소 하나 추가
s = set()
s.add(4)

# 집합에 원소 여러개 추가
s = {1, 2, 3}
s.update({4, 5})

# 집합에 원소 제거
s.remove(3) # 집합에는 순서가 없으므로 remove안의 값은 당연히 value이다.

 

4) 사전 (Dictionary) { }

  • 파이썬에서 제공하는 사전 자료형은 key - value 방법을 통해 저장한다.
name code
"John" 0011
"Maria" 1234
  • 이런 table concept을 의미하며, 정수 index가 아닌 key값을 통해서 value를 access한다.
  • 같은 말로 Hash Table이라고 불리며 데이터 관리에서 굉장히 중요한 개념이다.
  • 파이썬에서 사전 자료형은 {}을 이용하여 표현하는데, 집합과의 차이점을 두기 위해 원소에 반드시 :가 들어가야 한다.
  • 사전을 표현할 때는 {key : value, key2 : value2, ... } 형태로 표현한다.
  • key-value를 추가할 때 key가 이미 있으면 수정, 없으면 추가가 된다. 즉 key가 중복이 있으면 절대 안된다.
  • indexing는 키 값으로 한다.
    D = {'John' : '0011', 'Maria' : '1234'}
    D['John'] # dict indexing

관련 함수

# 추가
D['a'] = 3

# 삭제
D.pop('a') # pop뒤에는 key 값이 들어간다.

# 모든 key 확인
D.keys()

# 모든 value 확인
D.values()

# 모든 key, value 확인
D.items()

# 원소 가져오기
D.get('key값')
D['key'] #와 같다.
D.get('key값', "values")
# 만약 key값이 있으면 value 값으로 return, 없으면 뒤에  설정해준 value 값으로 return

# 존재하는 지 확인 
"key값" in D # D.keys()
"value값" in D.values() #로도 사용이 가능

'Python > 요약 정리' 카테고리의 다른 글

[K-Digital] 자주쓰이는 pandas 정리  (0) 2022.05.24
[K-Digital] Seaborn  (0) 2022.05.18
[Part 2] 시각화-area plot, pie chart  (0) 2022.02.13
[Part 2] 시각화-area plot, pie chart  (0) 2022.02.13
[Part 2] 시각화-box plot  (0) 2022.02.13
Comments