AngelPlayer`s Diary

자료형

실수형

- 실수형 소수점

소수부가 0이거나, 정수부가 0인 소수는 0을 생략 가능함

a = 5.
print(a) # 5.0

b = -.7
print(b) # -0.7

 

 

- 지수 표현 방법

유효숫자e지수 = 유효숫자 * 10^지수

a = 1e9
print(a) # 1000000000.0

b = 2752e-3
print(b) # 2.752

 

 

- 실수 계산 방법

컴퓨터는 실수를 정확하게 표현하지 못한다.

a = 0.3 + 0.6
print(a) # 0.8999999999999999

 

해결방안 : round()를 이용하여 반올림 처리한다. (일반적인 코딩 테스트는 소수점 다섯 번째 자리에서 반올림)

 

round(반올림할 수, 반올림할 위치-1)

-> 0부터 시작하므로 반올림할 위치도 -1해줌

a = 0.3 + 0.6
a = round(a, 4) # 5번째 소수점에서 반올림

print(a) # 0.9

 

 

 

리스트

빈 리스트 만들기

- a = [] 사용

- a = list() 사용

 

 

 

리스트 컴프리헨션

반복되거나 특정 조건을 만족하는 리스트로 초기화하는 방법

 

- 조건에 만족하는 수만 포함하는 리스트

# 홀수만 포함하는 리스트
array = [i for i in range(21) if i % 2 == 1]

print(array) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

 

- 수의 제곱 값을 포함하는 리스트

# 수의 제곱 값을 포함하는 리스트
array2 = [i * i for i in range(1, 10)]

 

 

- 2차원 리스트 초기화

x = 3
y = 4
array3 = [[0] * y for _ in range(x)] # y개의 0을 가진 리스트를 x개 가지는 리스트

print(array3) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

 

-> 2차원 리스트는 반드시 컴프리핸션을 통하여 초기화 해야함

# [error] 2차원 리스트 초기화 시 컴프리핸션을 사용하지 않는 경우
x = 3
y = 4
array3_1 = [[0] * y] * x

array3_1[1][1] = 5 # [1][1]의 요소를 바꾸려고 함
print(array3_1) # [[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]

하나의 내부 리스트의 요소 값을 바꾸고자 하였으나, 얕은 복사로 인해 모두 동일한 객체를 가르켜 모든 내부 리스트가 변환됨

 

 

 

리스트 관련 기타 메소드

- 변수명.append()

: 리스트의 마지막에 원소를 하나 삽일할 때 사용

 

 

- 변수명.sort()

: 오름차순으로 데이터 정렬

 

 

- 변수명.sort(reverse = True)

: 내림차순으로 데이터 정렬

 

 

- 변수명.reverse()

: 원소의 순서를 뒤집어 놓음

 

 

- 변수명.insert(삽입 위치 인덱스, 삽입할 값)

: 특정 위치에 값을 삽입

 

 

- 변수명.count(값)

: 리스트가 특정 값을 가지는 개수를 출력

 

 

- 변수명.remove(값)

: 특정 값을 가지는 원소를 제거 (여러 개라면 하나만 제거)

 

 

- 특정 원소 제거하기

data_list = [1, 2, 3, 3, 4, 5, 5, 5]
remove_set = {3, 5}

data_list = [i for i in data_list if i not in remove_set]

print(data_list)

 

 

 

문자열 자료형

- 큰따옴표, 따옴표 표기 : \" or \'

 

 

 

튜플 자료형

튜플은 소괄호()를 사용한다.

튜플은 한 번 선언한 값에 대한 변경이 불가능하다.

 

변경되어서는 안되는 값이 변경되는지 체크하는 용도

리스트에 비해 상대적으로 공간 효율적

다익스트라 최단 경로 알고리즘 등에 사용됨

a = (4, 5, 1, 3)

 

 

 

딕셔너리 자료형

key-value 쌍으로 이루어짐

순서가 없음

파이썬 딕셔너리 자료형은 내부적으로 해시 테이블을 가지고 있어 데이터 검색 및 수정이 O(1) 시간에 처리되어 리스트에 비해 빠르게 동작한다.

 

- 딕셔너리 요소 생성

data = {}

data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['자동차'] = 'Car'

print(data) # {'사과': 'Apple', '바나나': 'Banana', '자동차': 'Car'}

 

 

- 탐색

'요소' in 사전

if '사과' in data:
	print('True')

 

 

딕셔너리 자료형 관련 함수

- 딕셔너리.keys()

: 딕셔너리의 키 데이터만 뽑아서 리스트로 만듦

 

- 딕셔너리.value()

: 딕셔너리의 값 데이터만 뽑아서 리스트로 만듦

key_list = data.keys()
value_list = data.values()

print(key_list) # dict_keys(['사과', '바나나', '자동차'])
print(value_list) # dict_values(['Apple', 'Banana', 'Car'])

for i in key_list:
	print(i) # 키 값이 하나씩 출력

 

 

 

집합 자료형

중복을 허용하지 않음

순서가 없음

 

 

집합 초기화 방법

- set() 함수 사용

set1 = set([2,3,4,5,6,7,7,7,1,1])
print(set1) # {1, 2, 3, 4, 5, 6, 7}

 

 

- 중괄호 사용

set2 = {2,3,4,5,6,7,7,7,1,1}
print(set2) # {1, 2, 3, 4, 5, 6, 7}

 

 

 

집합 자료형 연산

- 집합1 | 집합2 : 합집합

- 집합1 & 집합2 : 교집합

- 집합1 - 집합2 : 차집합

print(set3 | set4) # {1, 2, 3, 4, 5, 6}
print(set3 & set4) # set()
print(set3 - set4) # {1, 3, 4}

 

 

- 집합.add(값) : 원소 추가

- 집합.update([값1, 값2]) : 여러 원소 추가

- 집합.remove(값) : 원소 제거

set5 = {1, 2, 3, 4, 5, 6, 7}

set5.add(8)
print(set5) # {1, 2, 3, 4, 5, 6, 7, 8}

set5.update([9, 10])
print(set5) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

set5.remove(7)
print(set5) # {1, 2, 3, 4, 5, 6, 8, 9, 10}

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band