a = 1000 # 양의 정수
b = -7 # 음의 정수
c = 0 # 0
a = 157.93
b = -1837.2
c = 5. # 소수부가 0일 때 0 생략: 5.0
d = -.7 # 정수부가 0일 때 0 생략: -0.7
유효숫자e지수 = 유효숫자 * 10^지수
a = 1e9 # 1,000,000,000
b = 75.25e1 # 752.5
c = 3954e-3 # 3.954
최단 경로 알고리즘 (그래프) : 도달할 수 없는 노드에 대하여 최단 거리를 INF(무한)으로 설정
round(123.456, 2) # 123.46
💡 연산 : 사칙연산 + 나머지 연산자 많이 사용
- // : 몫 연산자
- / : 나누기 연산자. 결과를 실수형으로 반환
- % : 나머지 연산자
- ** : 거듭제곱 연산자
a = [1,3,5,7,9]
print(a[1]) # 3
empty = list()
a = [1,2,3,4,5]
print(a[-1]) # 5
a = [1, 2, 3, 4, 5]
print(a[0:2]) # 1,2
a = [i for i in range(10)]
print(a) # [1,2,3,4,5,6,7,8,9]
b = [j * j for j in range(1,10) if j % 2 == 1]
print(b) # [1,9,25,49,81]
# List Comprehension 사용하지 않을 경우
b = []
for j in range(1,10):
if j % 2 == 1:
b.append(j*j)
print(b)
2차원 리스트 초기화할 때 효과적으로 사용
- n x m 크기의 2차원 리스트를 한 번에 초기화
a = [[0] * m for _ in range(n)]
_ : 반복문에서 반복 변수값 무시하고 싶을 때 사용
O(1)
O(NlogN)
O(N)
O(N)
O(N)
O(N)
a.append(4)
a.append([5,6])
a.sort() # 문자도 알파벳 순서 정렬 가능
a.reverse() # 정렬 X. 반환값 X. 그냥 뒤집어주는 메소드.
a.insert(0,4) # 리스트의 0번째 위치에 4 삽입
a.remove(3) # 리스트에서 첫 번째로 나오는 3 제거
a.count(1) # 1이 몇 개 있는지 리턴
💡 리스트에서 특정 값 가지는 원소 모두 제거
a = [1,2,3,3,3,4,5,5] remove_set = {3,5} result = [i for i in a if i not in remove_set] print(result) # [1,2,4]
a = 'hello'
b = 'world'
print(a+" "+b) # hello world
a = (1,2,3,4,5)
print(a[3]) # 4
print(a[1:4]) # (2,3,4)
튜플 장점
- 서로 다른 성질 데이터 묶어서 관리할 때 ex) 최단 경로 알고리즘 (비용, 노드 번호)
- 해싱 키 값으로 사용
- 메모리 효율적 사용
O(1)
data = dict()
data['사과'] = 'apple' # 사과: key, apple: value
data['바나나'] = 'banana'
data['오렌지'] = 'orange'
print(data) # {'사과':'apple', '바나나':'banana', '오렌지':'orange'}
key_list = data.keys()
value_list = data.values()
print(key_list) # dict_keys(['사과', '바나나', '오렌지'])
print(value_list) # dict_values(['apple', 'banana', 'orange'])
O(1)
a = set([1,1,2,3,4,4,5])
b = {1,1,2,3,4,4,5}
print(a) # {1,2,3,4,5}
print(b) # {1,2,3,4,5}
data.add(4)
data.update([5,6])
data.remove(3)
- 리스트, 튜플: 순서 O. 인덱싱을 통해 값 얻기
- 사전, 집합: 순서 X. 인덱싱 불가. 사전의 key, 집합의 element를 이용해
O(1)
로 조회
참고: 이것이 취업을 위한 코딩테스트다 with 파이썬
https://youtu.be/m-9pAwq1o3w