728x90
자료형
: 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 딕셔너리 등
정수형 (Integer)
: 양의 정수, 0, 음의 정수
실수형 (Real Number)
: 변수에 소수점을 붙이면 실수형으로 나타낸다.
- 지수 표현 방식: e나 E를 이용한 지수 표현 방식 이용기본적으로 e, E를 이용한 지수 표기 방식을 사용하면 시스템 상에서 자동으로 실수형으로 판단한다.
- Ex. 1e9 : 10의 9제곱(1,000,000,000)
round()
: 소수점 이하 수를 반올림하여 입력 값까지 반환└round(123.456, 2)
→ 123.46
수 자료형의 연산
/
: 나눠진 결과 반환 → 기본 리턴값 : 실수형%
: 나머지 연산 결과 반환//
: 몫 연산 결과 반환**
: 거듭 제곱 연산 결과 반환
리스트(List)
: 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형(배열 혹은 테이블이라고도 함)
- C나 자바에서의 배열 기능 및 연결 리스트와 유사하다.
- 비어 있는 리스트 선언 시,
list()
혹은 간단히[]
를 이용한다. - 원소는 쉼표
,
로 구분한다. - 리스트의 원소에 접근할 떄는 인덱스 값을 괄호에 넣어서 접근한다.
리스트의 인덱싱과 슬라이싱
- 인덱싱(Indexing) : 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것└ (음의 정수를 넣으면 뒤에서 부터 거꾸로 접근)
- └
a[-3]
: 리스트a
의 뒤에서 부터 3번째 원소에 접근 - 슬라이싱(Slicing) : 리스트에서 연속적인 위치를 갖는 원소를 가져올때 사용└ 대괄호 안에 콜론
:
을 넣어서 시작 인덱스와 끝 인덱스 설정
리스트 컴프리헨션
: 리스트 초기화 방법 중 하나
[]
안에 조건문과 반목문을 적용하여 리스트 초기화
array = [i for i in range(10)]
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1, 10)]
print(array) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
리스트 컴프리헨션의 응용
- 2차원 리스트를 초기화할 떄 효과적으로 사용
- 특히 N x M 크기의 2차원 리스트를 한 번에 초기화 해야할 떄 매우 유용
# N x M 크기의 2차원 리스트 초기화(잘못된 방법)
n = 4
m = 3
array = [[0] * m] * n # 내부 객체가 모두 동일한 것으로 인식됨
print(array)
array[1][1] = 5
print(array)
- 💡 반복문에서 언더바( _ ) 의 사용
: 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 자주 사용한다.
# N x M 크기의 2차원 리스트 초기화
n = 4
m = 3
array = [[0] * m for _ in range(n)]
print(array)
#[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
문자열
- 문자열 변수를 초기화할 때는 큰 따옴표
"
나 작은 따옴표'
를 이용한다. - 문자열 내에 큰 따옴표 혹은 작은 따옴표를 포함시켜야 하는 경우
- 전체 문자열
"
- 내부 문자열'
- 전체 문자열
'
- 내부 문자열"
- 또는 백슬래시
\
를 사용하여 원하는 만큼 포함
- 전체 문자열
문자열 연산
- 문자열 변수에
+
를 이용하면 문자열 연결 가능 - 문자열 변수 곱하기 양의 정수도 가능
- 문자열은 인덱싱과 슬라이싱 가능
- 그러나 특정 인덱스 값은 변경 불가
튜플
- 리스트와 유사한 개념
- 한번 선언된 값을 변경할 수 없다.
- 리스트는
[]
, 튜플은()
- 튜플은 리스트에 비해 상대적으로 공간 효율적이다.(기능이 제한적이기 때문)
a = (1, 2, 3, 4, 5, 6, 7, 8, 9)
# 네 번째 원소만 출력
print(a[3]) # 4
# 두 번째 원소만 출력
print(a[1:4]) # (2, 3, 4)
💡 튜플을 사용하면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
- 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
- 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있다.
- 리스트보다 메모리를 효율적으로 사용해야 할때
딕셔너리
- 키(Key) 와 값(Value)의 쌍을 데이터로 가지는 자료형
- 리스트나 튜플이 값을 순차적으로 저장하는 것과 다르다.
- 키와 값의 쌍을 데이터로 가지며, 원하는 변경 불가능한 자료형을 키로 사용할 수 있다.
💡 파이썬의 딕셔너리 자료형은 해시 테이블(Hash Table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1) 의 시간에 처리할 수 있다.
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data)
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재합니다.")
# [출력]
# {'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}
# '사과'를 키로 가지는 데이터가 존재합니다.
# 딕셔너리 초기화 방법 2
b = {
'사과' : 'Apple',
'바나나' : 'Banana'
}
💡 리스트보다 훨씬 효율적으로 데이터 조회 가능
집합
- 중복을 허용하지 않는다.
- 순서가 없다.
- 집합은 리스트 혹은 문자열을 이용해 초기화 한다.
set()
함수 이용
- 중괄호
{}
안에 각 원소를,
를 기준으로 구분 삽입하여 초기화 - 시간 복잡도 O(1)
# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data) # {1, 2, 3, 4, 5}
# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5}
print(data) # {1, 2, 3, 4, 5}
💡 합집합, 교집합, 차집합 연산 가능
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
# 합집합
print(a | b) # {1, 2, 3, 4, 5, 6, 7}
# 교집합
print(a & b) # {3, 4, 5}
# 차집합
print(a - b) # {1, 2}
- 집합 자료형 관련 함수
data = set([1, 2, 3])
print(data) # {1, 2, 3}
# 새로운 원소 추가
data.add(4)
print(data) # {1, 2, 3, 4}
# 새로운 원소 여러 개 추가
data.updata([5, 6])
print(data) # {1, 2, 3, 4, 5, 6}
# 특정한 값을 갖는 원소 삭제
data.remove(3)
print(data) # {1, 2, 4, 5, 6}
💡 리스트, 튜플과 딕셔너리, 집합 자료형과의 차이점
- 순서가 없기 떄문에 인덱싱으로 값을 얻을 수 없다.
- 사전의 키(Key) 혹은 집합의 원소를 이용해 조회한다.
해당 포스팅의 내용은
저)나동빈님의 『이것이 취업을 위한 코딩 테스트다 with 파이썬』을
통해 공부한 내용을 토대로 작성하였습니다.
이것이 취업을 위한 코딩 테스트다 with 파이썬
저자 | 나동빈
출판 | 한빛미디어
발매 | 2020.08.05.
728x90
'📊 Algorithm > Paradigm' 카테고리의 다른 글
[Python Plus] Extended Slices [::-1] (0) | 2022.01.25 |
---|---|
[알고리즘 대비 - 이코테] 3. 구현 (0) | 2021.09.19 |
[알고리즘 대비 - 이코테] 2. 그리디 (0) | 2021.08.20 |
[알고리즘 풀이방법] 알고리즘 평가법 (0) | 2021.05.26 |
[알고리즘 풀이방법] 알고리즘 패러다임 (0) | 2021.05.26 |