문자열 자료형
문자열 변수를 초기화할 때는 큰따옴표(")나 작은따옴표(')를 이용한다. 다만 문자열 안에 큰따옴표나 작은따옴표가 포함되어야 하는 경우가 있다. 기본적으로 문자열을 큰따옴표로 구성하는 경우, 내부적으로 작은따옴표를 포함할 수 있고 반대로 문자열을 작은따옴표로 구성하는 경우, 내부적으로 큰따옴표를 포함할 수 있다. 혹은 백슬래시(\)를 사용하면, 큰 따옴표나 작은따옴표를 문자열에 원하는 만큼 포함시킬 수 있다.
data = "Don't you know \"Python\"?"
print(data)
문자열 연산
파이썬은 문자열에 대한 연산도 지원한다.
자바와 같이 문자열 변수에 덧셈(+)을 이용하면 단순히 문자열이 더해져서 연결된다. C언어에서는 strcat()을 사용해야 한다.
또한 파이썬에서는 문자열 변수와 양의 정수를 곱하는 경우, 문자열이 그 값만큼 여러 번 더해진다.
a = "Hello"
print(a*3)
파이썬의 문자열은 내부적으로 리스트와 같이 처리되기 때문에 문자열 데이터에 대해서도 인덱싱과 슬라이싱을 이용할 수 있다.
a = "Hello"
print(a[1:3])
튜플 자료형
파이썬의 튜플 자료형은 리스트와 거의 비슷한데 다음과 같은 차이가 있다.
- 튜플은 한 번 선언된 값을 변경할 수 없다.
- 리스트는 대괄호([])를 이용하지만, 튜플은 소괄호(())를 이용한다.
a = (1,2,3,4)
print(a)
a[2] = 8
위와 같이 튜플 데이터를 선언한 다음, 튜플의 특정 값을 변경한다면 에러메세지가 출력된다.
즉, 대입연산자(=)을 사용하여 값을 변경할 수 없다는 의미이다.
튜플 자료형은 그래프 알고리즘을 구현할 때 자주 사용된다. 예를 들어 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾는 알고리즘의 내부에서는 우선순위 큐를 사용하는데 해당 알고리즘에서 우선순위 큐에 한 번 들어간 값은 변경되지 않기 때문에 튜플로 우선순위 큐를 구현한다면 혹여나 알고리즘을 잘못 작성하여 변경하면 안 되는 값을 변경하고 있지는 않은지 체크할 수 있다. 흔히 다익스트라 최단 경로 알고리즘에서는 '비용'과 '노드 번호'를 함께 튜플로 묶어서 관리하는 것이 관례이다. 또한 튜플은 리스트에 비해 공간 효율적이다.
사전 자료형
사전 자료형은 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형이다.
리스트와 튜플은 값을 순차적으로 저장하는데 비해 사전 자료형은 키-값 쌍을 데이터로 가진다는 점에서, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다. 사전 자료형은 해시 테이블을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간복잡도를 가져 리스트보다 훨씬 빠르게 동작할 수 있다.
# 사전자료형 초기화 방법 1
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
# 사전자료형 초기화 방법 2
data2 = dict()
data2 = {
'물':'Water', '모자':'Hat', '축구':'Soccer'
}
# 해당 키를 갖는 값 검사
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재합니다.")
사전 자료형 관련 함수
대표적으로는 키와 값을 별도로 뽑아내기 위한 함수들이 있다.
키 데이터만 뽑아서 리스트로 이용할 때는 keys() 함수를 이용하며, 값 데이터만을 뽑아서 이용할 때는 values() 함수를 이용한다.
이 함수를 이용하여 뽑은 객체는 각각 dict_keys, dict_values라는 고유 객체로 반환되기 때문에 리스트로 이용하기 위해서는 형변환을 해주어야 한다.
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
key_list = list(data.keys())
value_list = list(data.values())
print(key_list)
print(value_list)
집합 자료형
파이썬에서는 집합을 처리하기 위한 집합 자료형을 제공하고 있다.
집합은 기본적으로 리스트 혹은 문자열을 이용해서 만들 수 있는데, 집합은 다음과 같은 특징이 있다.
- 중복을 허용하지 않는다.
- 순서가 없다.
리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 값을 얻을 수 있었던 반면에 사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다. 더불어 집합 자료형에서는 키가 존재하지 않고 값 데이터만 담을 수 있다.
특정 원소가 존재하는지를 검사하는 연산의 시간복잡도는 사전 자료형과 마찬가지로 O(1)이다.
# 집합 자료형 초기화 방법 1
data = set([1,2,3,3,4,4,5])
print(data)
# 집합 자료형 초기화 방법 2
data = {1,2,3,3,4,4,5}
print(data)
집합 자료형의 연산
기본적인 집합 연산으로는 합집합, 교집합, 차집합 연산이 있다.
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합
집합 자료형 관련 함수
메서드명 | 사용법 | 설명 |
add() | 변수명.add(특정 값) | 집합에 원소를 하나 추가한다. |
update() | 변수명.updata(리스트) | 집합에 여러 개의 원소를 추가한다. |
remove() | 변수명.remove(특정 값) | 집합에서 특정 값의 원소 삭제 |
이때 add(), remove() 함수는 모두 시간복잡도가 O(1)이다.
참고자료: 이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 지음(한빛미디어)
'Python > 파이썬 문법' 카테고리의 다른 글
[파이썬 문법] 함수 (0) | 2021.12.29 |
---|---|
[파이썬 문법] 파이썬의 조건문 (0) | 2021.12.28 |
[파이썬 문법] 입출력 (0) | 2021.12.28 |
[파이썬 문법] 리스트 자료형 (0) | 2021.12.25 |
[파이썬 문법] 수 자료형 (0) | 2021.12.24 |