-
2022.03.03 - [이코테] 파이썬 기초 문법(1) - 파이썬의 자료형개발/Python 2022. 3. 3. 17:49
파이썬의 자료형
수 자료형(정수형, 실수형), 리스트 자료형, 문자열 자료형, 튜플 자료형, 사전 자료형, 집합 자료형
정수형 : 양의 정수, 음의 정수
실수형 : 소수점 아래 데이터 포함
지수표현 방식
e/E 다음에 오는 수는 10의 지수부
유효숫자e지수 = 유효숫자*10^지수
실수형 데이터로 처리한다
임의의 큰 수를 표현할 때 사용됨
- 최단 경로 알고리즘에선 도달할 수 없는 노드를 무한(INF)로 설정하는데, 이때 1e9 대입하면된다.
※ 실수형 표현하는 정확도에 한계가 존대한다. 컴퓨터는 2진수 체계이기 때문이다.
ex) 0.3 + 0.6 = 0.9(10진수 체계), 0.3 + 0.6 = 0.8999...(2진수 체계)
--> round() 함수 이용
round(123.456 2) --> 출력 123.46
수 자료형의 연산
- 사칙연산과 나머지 연산자 많이 사용됨
- 나누기 연산 시 주의 : 나눠진 결과가 실수형
- 나머지 연산자(%), 몫 연산자(//), 거듭제곱 연산자(**)
리스트 자료형(배열, 테이블)
- C/Java의 배열(Array), 연결 리스트(Arraylist), C++의 vector와 유사
초기화
- []안에 원소 넣기
- 비어있는 리스트 초기화 : list(), []
리스트의 인덱싱과 슬라이싱
인덱싱(indexing)
- 리스트의 특정한 원소에 접근하는 것
- 인덱스값은 양수/음수 모두 가능
양의 정수 : 0, 1, 2, 3, 4 ...
음의 정수 : -5, -4, -3, -2, -1 ...
슬라이싱(slicing)
- 연속적인 위치를 갖는 원소들 가져오기
- 콜론(:)을 이용하여 시작 인덱스와 끝 인덱스를 설정
List comprehension
- 리스트를 초기화하는 방법 중 하나
- 대괄호 안에 조건문, 반복문 적용하여 초기화
- 2차원 리스트 초기화 시 효과적
특히 N*M 크기의 2차원 리스트 한 번에 초기화 할 때 유용
array = [i for i in range(10)] n =3 m =4 array = [[0]*m for _ in range(n)] #good array[1][1] = 5 print(array) >>[0, 0, 0, 0], [0, 5, 0, 0], [0, 0, 0, 0]] array = [[0]*m]*n #bad, 리스트 안에 포함된 리스트가 모두 같은 객체로 인식 array[1][1] = 5 print(array) >>[[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]
리스트 관련 기타 메소드
- append() : 리스트에 원소를 하나 삽입할 때 사용
- sort() : 정렬(내림차순 정렬 시 reverse=True 옵션 추가)
- reverse() : 리스트의 원소의 순서를 모두 뒤집어 놓는다
- insert() : 특정한 인덱스의 위치에 원소 삽입
- count() : 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
- remove() : 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거함 (remove_all은 없음)
a = [1, 2, 3, 4, 5, 5, 5] remove_set = {3,5} result = [i for i in a if i not in remove_set] print(result) >>>[1, 2, 4]
문자열 자료형
문자열 초기화 : 초기화 시 큰 따옴표(")나 작은 따옴표(') 사용
문자열 연산 : +, * 이용 가능, 인덱싱과 슬라이싱 가능, 특정 인덱스값 변경은 불가
튜플 자료형
리스트와 유사
차이점 :
1. 한 번 선언된 값은 변경이 불가
2. 소괄호() 이용
3. 리스트에 비해 상대적으로 공간 효율적이다.
장점 :
1. 서로 다른 성질의 데이터를 묶어서 관리하는 경우
- 최단 경로 알고리즘에서(비용, 노드번호) 형태로 묶어 사용
2. 데이터의 나열을 해싱의 키값으로 사용해야 할 때
3. 리스트보다 메모리를 효율적으로 사용해야 할 때
사전 자료형
- key와 value의 쌍을 데이터로 가지는 자료형
- 변경 불가능한 자료형을 key로 가질 수 있음
- 해쉬 테이블을 이용하므로 데이터 조회 및 수정의 시간 복잡도가 O(1)
관련 메소드
- 키와 값을 별도로 뽑아내기 위한 메소드
- key 데이터만 뽑아서 리스트 : keys() 함수
- value 데이터만 뽑아서 리스트 : values() 함수
data = dict() data['사과'] = 'Apple' data['바나나'] = 'Banana' data['코코넛'] = 'Coconut' print(data) if '사과' in data: print("'사과'를 키로 가지는 데이터가 존재합니다.") print(list(data.keys())) print(list(data.values())) >>> {'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'} >>> '사과'를 키로 가지는 데이터가 존재합니다. >>> ['사과', '바나나', '코코넛'] >>> ['Apple', 'Banana', 'Coconut']
집합 자료형
- 집합의 특징 : 중복 허용하지 않는다, 순서가 없다 / 특정값의 존재 여부 확인 시 활용!
- 리스트/문자열을 이용해서 초기화 : set() 함수
- 중괄호{}안에 원소를 나열하여 초기화
- 데이터의 조회 및 수정의 시간 복잡도가 O(1) / 리스트와 튜플은 시간복잡도 O(n)
data = set([1, 1, 2, 3, 4, 4, 5]) print(data) data = {1, 1, 2, 3, 4, 4, 5} print(data) a = {1, 2, 3} a.add(3) print(a) print(1 in a) >>>{1, 2, 3, 4, 5} >>>{1, 2, 3, 4, 5} >>>{1, 2, 3} >>>True
관련 메소드
data = set([1,2,3]) print(data) data.add(4) print(data) data.update([5,6]) print(data) data.remove(3) print(data) >>>{1, 2, 3} >>>{1, 2, 3, 4} >>>{1, 2, 3, 4, 5, 6} >>>{1, 2, 4, 5, 6}
사전 자료형 & 집합 자료형의 특징
1. 리스트나 튜플은 순서가 있기 때문에 인덱싱을 이용해서 값을 얻을 수 있음
2. 사전 자료형, 집합 자료형은 순서가 존재하지 않기 때문에 인덱싱으로 값을 얻을 수 없다
- 사전의 key나 집합의 원소로 O(1)의 시간복잡도로 조회
- 사전의 key나 집합의 원소로 변경 불가능한 문자열이나 튜플을 이용
'개발 > Python' 카테고리의 다른 글
2022.04.29 - [이코테] 구현 (0) 2022.04.29 2022.03.03 - [이코테] 파이썬 기초 문법(2) - 파이썬의 자료형 (0) 2022.03.03 2022.03.03 - [이코테] 코딩테스트 개요 (0) 2022.03.03