TIL 50 | Python 문법 - 자료형 #2

임종성·2021년 10월 11일
1

Python

목록 보기
6/7
post-thumbnail

Python은 문법이 간결하면서도 다루기 쉬운 언어로 알고리즘을 구현할 때도 다른 언어(C/C++/Java)에 비해서 코드가 짧은 편입니다. 이곳에서는 코딩 테스트에서 중요한 Python 문법 위주로 다루었습니다.

알고리즘 풀이를 포함한 모든 프로그래밍은 결국 데이터를 다루므로, 자료형에 대한 이해는 근본적으로 매우 중요하다고 할 수 있습니다. 파이썬의 자료형은 다른 언어에서 사용되는 기본 자료형을 제공할 뿐 아니라 Dictionary, Set 등 강력한 기능을 제공하는 자료형을 내장하고 있어 매우 편리합니다.

본문 내용은 이것이 코딩 테스트다 with 파이썬 도서를 참고하였습니다.

Tuple 자료형

Tuple은 List와 거의 비슷하지만 한 번 선언된 값을 변경할 수 없고(Immutable), 소괄호(())를 이용한다는 점에서 차이가 있습니다. Tuple은 그래프 알고리즘을 구현할 때 자주 사용됩니다. 예를 들어 우선순위 큐를 활용하는 경우 큐에 한 번 들어간 값은 변경되지 않아야 하기 때문에 Tuple로 구성합니다.

a = (1, 2)
print(a) # output: (1, 2)
a[2] = 7 # output: TypeError: 'tuple' object does not support item assignment

Dictionary 자료형

Dictionary 초기화

Dictionary는 Key와 Value의 쌍을 데이터로 가지는 자료형입니다. Dictionary의 Key값은 Immutable이지만 Value는 Mutable입니다. Python의 Dictionary는 내부적으로 해시 테이블을 이용하므로 기본적으로 Data 검색 및 수정에 있어 O(1)의 시간 복잡도를 가집니다.

# Dictionary 생성
data = dict() or {}
data['이름'] = '임종성'
data['나이'] = 30
print(data) # output: {'이름' : 임종성, '나이' : 30}

# Dictionary에 특정 Key값 존재유무 확인
print(True) if '이름' in data else print(False) # output: True

Python에서 List, String, Tuple등 원소를 차례대로 반복할 수 있는 자료형을 Iterable 자료형이라 합니다. Iterable Data Type은 원소를 포함하는 컨테이너 역할을 하는 것이 대부분이기에 in 문법을 사용할 수 있습니다.

Dictionary 관련 함수

data = {'이름' : 임종성, '나이' : 30}

# Key Data만 담은 List
key_list = data.keys()
print(key_list) # output: dict_keys(['이름', '나이'])

# Valude Data만 담은 List
value_list = data.values()
print(value_list) # output: dict_values(['임종성', 30])

# Value for Key
[print(data[key]) for key in key_list] # output: 임종성 30

Set 자료형

Set 소개

Python에서 집합을 처리하기 위해 Set Data Type을 제공합니다. 기본적으로 List나 String을 만들 수 있는데, 집합은 중복을 허용하지 않고 순서가 없다는 특징이 있습니다. 따라서 Indexing을 통해 값을 얻을 수 없습니다.

# Set 초기화
data = set([1, 2, 3, 3, 4])
print(data) # output: {1, 2, 3, 4}

data = {1, 2, 3, 3, 4}
print(data) # output: {1, 2, 3, 4}

Set 연산과 함수

기본적으로 Set 연산은 합집합, 교집합, 차집합이 있습니다.

a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}

# 합집합
print(a|b) # output: {1, 2, 3, 4, 5, 6, 7}
# 교집합
print(a&b) # output: {3, 4, 5}
# 차집합
print(a-b) # output: {1, 2}

# 새로운 원소 추가
a.add(6)
print(a) # output: {1, 2, 3, 4, 5, 6}

# 새로운 원소 여러개 추가
a.update([7, 8])
print(a) # output: {1, 2, 3, 4, 5, 6, 7, 8}

# 특정 원소 제거
a.remove(3)
print(a) # output: {1, 2, 4, 5, 6, 7, 8}
profile
어디를 가든 마음을 다해 가자

0개의 댓글