정수형
a = 1000 # 양의 정수
a = -7 # 음의 정수
a = 0 # 0
실수형
a = 157.93 # 양의 실수
a = -1837.2 # 음의 실수
a = 5. # 소수부가 0일 때 0을 생략
a = -.7 # 정수부가 0일 때 0을 생략
지수 표현
a = 1e9 # 10억의 지수 표현 방식
a = 75.25e1 # 752.5
a = 3954e-3 # 3.954
소수점 값을 비교하는 작업이 필요한 문제라면 실수 값을 비교하지 못해서 원하는 결과를 얻지 못할 수 있다. 이럴 때는 round() 함수를 이용할 수 있다.
round()
a = 0.3 + 0.6
print(round(a, 4))
if round(a, 4) == 0.9:
print(True)
else:
print(False)
round() 함수를 호출할 때는 인자를 넣는데 첫 번째 인자는 실수형 데이터이고, 두 번째 인자는 (반올림하고자 하는 위치 - 1)이다.
Tip. 흔히 코딩 테스트 문제에서는 실수형 데이터를 비교할 때 소수점 다섯 번째 자리에서 반올림한 결과가 같으면 정답으로 인정하는 식으로 처리한다.
수 자료형의 연산
a = 7
b = 3
print(a / b) # 나누기
print(a % b) # 나머지
print(a // b) # 몫
print(a ** b) # 거듭 제곱
리스트 만들기
리스트는 대괄호([])안에 원소를 넣어 초기화하며, 쉼표(,)로 원소를 구분한다. 비어 있는 리스트를 선언하고자 할 때는 list() 혹은 간단히 대괄호([])를 이용할 수 있다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a)
# 인덱스 4, 즉 다섯 번째 원소에 접근
print(a[4])
# 빈 리스트 선언 방법 1)
a = list()
print(a)
# 빈 리스트 선언 방법 2)
a = []
print(a)
Tip. 코딩 테스트 문제에서는 주로 크기가 N인 1차원 리스트를 초기화해야 하는데 다음 방식으로 초기화하면 편리하다. 다음은 크기가 N이고, 모든 값이 0인 1차원 리스트를 초기화하는 소스코드다.
# 크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n
print(a)
리스트의 인덱싱과 슬라이싱
인덱스값을 입력하여 리스트의 특정한 원소에 접근하는 것을 인덱싱(Indexing)이라고 한다. 파이썬의 인덱스값은 양의 정수와 음의 정수를 모두 사용할 수 있으며, 음의 정수를 넣으면 원소를 거꾸로 탐색하게 된다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 뒤에서 첫 번째 원소 출력
print(a[-1])
# 뒤에서 세 번째 원소 출력
print(a[-3])
# 네 번째 원소 값 변경
a[3] = 7
print(a)
리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때는 슬라이싱(Slicing)을 이용할 수 있다. 이때는 대괄호 안에 콜론(:)을 넣어서 시작 인덱스와 (끝 인덱스 - 1)을 설정할 수 있다.
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 두 번째 원소부터 네 번째 원소까지
print(a[1 : 4])
리스트 컴프리헨션
리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나이다. 리스트 컴프리헨션을 이용하면 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다. 간단히 0부터 19까지의 수 중에서 홀수만 포함하는 리스트를 만들고자 할 때는 다음과 같이 리스트를 초기화할 수 있다.
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)
위 코드는 아래와 같이도 나타낼 수 있다.
array = []
for i in range(20):
if i % 2 == 1:
array.append(i)
print(array)
또 다른 예시로 1부터 9까지 수의 제곱 값을 포함하는 리스트를 만들고자 할 때는 다음과 같이 리스트를 초기화할 수 있다.
# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1, 10)]
print(array)
이러한 리스트 컴프리헨션은 코딩 테스트에서 2차원 리스트를 초기화 할 때 매우 효과적으로 사용될 수 있다. 예를 들어 N X M 크기의 2차원 리스트를 초기화할 때는 다음과 같이 사용한다.
# N X M 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n)]
print(array)
* 파이썬 자료구조/알고리즘에서는 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_)를 자주 사용한다.
* 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.
리스트 관련 기타 메서드
a = [1, 4, 3]
print("기본 리스트: ", a)
# 리스트에 원소 삽입
a.append(2)
print("삽입: ", a)
# 오름차순 정렬
a.sort()
print("오름차순 정렬: ", a)
# 내림차순 정렬
a.sort(reverse = True)
print("내림차순 정렬: ", a)
# 리스트 원소 뒤집기
a.reverse()
print("원소 뒤집기: ", a)
# 특정 인덱스에 데이터 추가
a.insert(2, 3)
print("인덱스 2에 3추가: ", a)
# 특정 값인 데이터 개수 세기
print("값이 3인 데이터 개수: ", a.count(3))
# 특정 값 데이터 삭제
a.remove(1)
print("값이 1인 데이터 삭제: ", a)
Tip. append() 함수는 O(1)에 수행되는 데에 반해 insert() 함수는 동작이 느리다. 중간에 원소를 삽입한 뒤에, 리스트의 원소 위치를 조정해줘야 하기 때문이다. remove()의 시간 복잡도는 insert() 함수와 마찬가지로 O(N) 이다.
특정한 값의 원소를 모두 제거하려면 아래와 같이 사용한다.
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
# remove_set에 포함되지 않는 값만을 저장
result = [i for i in a if i not in remove_set]
print(result)
문자열 초기화
data = 'Hello World'
print(data)
data = "Don't you know \"Python\"?"
print(data)
문자열 연산
문자열 변수에 덧셈(+)을 이용하면 단순히 문자열이 더해져서 연결된다.
a = "Hello"
b = "World"
print(a + " " + b)
문자열 변수를 양의 정수와 곱하는 경우, 문자열이 그 값만큼 여러 번 더해진다.
a = "String"
print(a * 3)
문자열 데이터에 대해서도 마찬가지로 인덱싱과 슬라이싱을 이용할 수 있다.
a = "ABCDEF"
print(a[2 : 4])
튜플 자료형
파이썬의 튜플 자료형은 리스트와 거의 비슷한데 다음과 같은 차이가 있다.
- 튜플은 한 번 선언된 값을 변경할 수 없다.
- 리스트는 대괄호([])를 이용하지만, 튜플은 소괄호(())를 이용한다.
a = (1, 2, 3, 4)
print(a)
a[2] = 7
* 튜플이 특정한 값을 변경하려고 할 때는 오류 메시지가 출력된다.
사전 자료형
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data)
if '사과' in data:
print("'사과'를 키로 가지는 데이터가 존재합니다.")
* 사전 자료형에 특정한 원소가 있는지 검사할 때는 '원소 in 사전'의 형태를 사용할 수 있다. 이는 리스트나 튜플에 대해서도 사용할 수 있는 문법이다.
사전 자료형 관련 함수
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
# 키 데이터만 담은 리스트
key_list = data.keys()
# 값 데이터만 담은 리스트
value_list = data.values()
print(key_list)
print(value_list)
# 각 키에 따른 값을 하나씩 출력
for key in key_list:
print(data[key])
집합 자료형
집합은 기본적으로 리스트 혹은 문자열을 이용해서 만들 수 있는데, 집합은 다음과 같은 특징이 있다.
- 중복을 허용하지 않는다.
- 순서가 없다.
집합 자료형을 초기화할 때는 set() 함수를 이용하거나, 중괄호({}) 안에 각 원소를 콤마(,)를 기준으로 구분해서 넣으면 된다.
# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data)
# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 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) # 차집합
집합 자료형 관련 함수
data = set([1, 2, 3])
print(data)
# 새로운 원소 추가
data.add(4)
print(data)
# 새로운 원소 여러 개 추가
data.update([5, 6])
print(data)
# 특정한 값을 갖는 원소 삭제
data.remove(3)
print(data)
'개발 > Python' 카테고리의 다른 글
입출력 관련 (1) | 2024.01.05 |
---|---|
코테용 파이썬 라이브러리 문법 (1) | 2023.11.12 |
코테용 파이썬 문법 정리3 (0) | 2023.11.09 |
코테용 파이썬 문법 정리2 (1) | 2023.11.09 |