파이썬 data type인 list, tuple, dictionary, string에 대해서 정리하려고 한다.
1. list
다른 프로그래밍 언어의 '배열(array)'과 비슷한 성질을 갖는 data type이다.
list는 쉼표로 data를 분리하여 대괄호로 묶어주어 생성할 수 있다.
a = [10, 20, 30, 40, 50]
이러한 list의 각각의 data를 참조하기 위해서는 data의 위치를 나타내주는 index를 사용하며 0부터 시작한다.
파이썬에서는 마이너스(-) index를 지원하여 리스트의 마지막부터 역순으로 값을 참조할 수 있다.
(머신러닝 코드에서 slice와 함께 자주 사용된다.)
# index 0 1 2 3 4
# value 10 20 30 40 50
# index -5 -4 -3 -2 -1
list는 각 요소의 data type을 다르게 해서 생성할 수 있으며, list안에 또 다른 list를 포함할 수도 있다.
b = [10, 20, "Hello", [True, 3.14] ]
# index 0 1 2 3
# value 10 20 "Hello" [True, 3.14]
# index -4 -3 -2 -1
b[-1] == b[3] == [True, 3.14]
b[3][0] == b[-1][-2] == True
b[3][1] == b[-1][-1] == 3.14
빈 list를 생성한 후 append 메소드를 이용하여 데이터를 추가할 수 있다.
(머신러닝 코드에서 정확도 계산, 손실함수 값 저장하기 위해 사용한다.)
파이선 list에는 콜론(:)을 이용한 '슬라이싱' 기능이 있다. 슬라이싱을 이용하면 범위를 지정해 부분 list를 얻을 수 있다.
(머신러닝을 위해서는 반드시 알아야 하는 기능이다.)
2. Tuple
list와 거의 비슷하지만
list는 [ ]으로 둘러싸지만 tuple은 ( )으로 둘러싼다.
list 내의 원소는 변경할 수 있지만 tuple은 변경할 수 없다.(tuple은 read-only data type이다.)
튜플을 사용하면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리해야할 때
- 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용한다.
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
- 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있다.
- 리스트보다 메모리를 효율적으로 사용해야 할 때
- iteration을 도는 속도가 리스트보다 빠르다.
3. Dictionary
다른 프로그래밍 언어의 '해시(hash)' 또는 '맵(map)'과 구조가 비슷하다.
키(key)와 값(value)을 한 쌍으로 해서 데이터를 저장한다.
purse = dict() # 또는 purse = {} 와 같이 생성할 수도 있다.
purse['money'] = 12 # 'money'라는 키에 12라는 값 연결
purse['candy'] = 3 # 'candy'라는 키에 3이라는 값 연결
purse['tissues'] = 75 # 'tissues'라는 키에 75라는 값 연결
purse를 실행해보면 다음과 같은 형태로 출력이 된다. 여기서는 입력한 순서대로 나오지만 항상 입력한 순서대로 출력되는 것은 아니다.
print(purse)
#{'money': 12, 'candy': 3, 'tissues': 75}
candy라는 키에 저장된 값에 접근하려면 다음과 같이 대괄호 안에 키를 넣어서 접근할 수 있다.
print(purse['candy'])
#3
접근한 내용을 업데이트할 수도 있다.
purse['candy'] = purse['candy'] + 2
print(purse)
#{'money': 12, 'candy': 5, 'tissues': 75}
for문을 이용해서 다음과 같이 키와 값을 모두 출력할 수 있다.
x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
for key, value in x.items():
print(key, value)
#a 10
#b 20
#c 30
#d 40
딕셔너리의 key만 출력하고 싶으면 keys() 함수를 이용하면 된다.
x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
for key in x.keys():
print(key, end=' ')
#a b c d
또한 values() 함수를 이용해 딕셔너리의 value만도 출력할 수 있다.
x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
for value in x.values():
print(value, end=' ')
#10 20 30 40
get 메소드
dict.get(key, default=None)
딕셔너리의 key에 해당하는 값을 return해준다.
만약 해당 key가 딕셔너리에 없다면 default값을 반환해준다.
이때 default값을 변경해줄 수 있다.
default값을 0으로 설정: dict.get(key, default=0)
4. String
파이썬 string은 홑따옴표(' ') 또는 쌍따옴표(" ")를 사용해서 생성한다.
문자열 내의 각각의 값 또한 문자열로 인식되며, 문자열을 분리하여 list로 반환하는 split()함수는 머신러닝 코드에서 문자열 데이터 전처리(pre-process)하기 위해 자주 사용된다.
a = 'A73,CD'
print(a[1]) # '7'
a = a +, 'EFG' # + 연산자 사용
print(a) # 'A73,CD, EFG'
# split() 메서드는 특정 separator를 기준으로 문자열을 분리하여 list 리턴
b = a.split(',')
print(b) # ['A73', 'CD', ' EFG']
문자열도 불변한 객체여서 딕셔너리의 키 값으로 사용할 수 있다.
my_string = "Hello"
my_string[0] = "B" # TypeError: 'str' object does not support item assignment
참고: https://dojang.io/mod/page/view.php?id=2308,
https://www.boostcourse.org/cs122/lecture/315114/?isDesc=false,
이것이 취업을 위한 코딩 테스트다 with 파이썬, https://www.youtube.com/watch?v=p6df7qv6jFQ&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=5,
https://itholic.github.io/python-list-tuple/ ,
딕서녀리 정렬,
딕셔너리 get 메소드,
'Python' 카테고리의 다른 글
[Python] [정렬] Timsort (0) | 2025.05.15 |
---|---|
[Python] Collections (deque, OrderedDict, defaultdict, Counter) (2) | 2024.02.13 |
[Python] itertools 모듈: 순열(permutations), 조합(combinations), 곱집합(product) (0) | 2023.05.26 |
[Python] set (집합 자료형) (0) | 2023.02.21 |
[Python] 우선순위 큐 (PriorityQueue) (0) | 2023.01.19 |