⚙️ 알고리즘/코딩테스트 준비

[Python 문법] 자료형

dev_zoe 2021. 1. 19. 22:19
반응형

실수형

//10억
a = 1e9

//752.5
a = 75.25e1

//3.954
a = 3954e-3

파이썬에서는 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리한다.

소수부가 0이거나 정수부가 0이면 0을 생략할 수 있다.

 

//a = 5.0
a = 5.

//a = -0.5
a = -.5

 

실수형 데이터는 e나 E를 이용한 지수표현 방식을 이용할 수 있다. 즉, 유효숫자e^지수 = 유효숫자 * 10^지수

특히, 무한(INF) 값을 표현할 때 최대값이 10억일 경우 INF값을 1e9로 표현할 수 있다. (1e9 = 10억)

 

//10억
a = 1e9

//75.25
a = 7.525e1

//3.954
a = 3954e-3

컴퓨터는 실수를 정확히 표현하지 않으므로,

정확한 실수는 round(첫번째 인자, 반올림하고자하는 위치-1) 함수로 반올림한다.

코딩테스트에서는 소수점 다섯번째자리에서 반올림한 결과가 같으면 정답으로 인정한다.

 

//a = 0.899999999999
a = 0.3+0.6

//a = 0.9
a = 0.3+0.6
round(a, 4)

나눌때의 몫만 구하고싶은 경우 // 을 사용한다.

 

리스트 자료형

리스트 -> 배열, 테이블

대괄호([])를 사용하며, 비어있는 리스트를 선언할때는 list() 나 [] 로 선언할 수 있다.

 

//빈 리스트 선언법1
a = list()

//빈 리스트 선언법2
a = []

 

모든값이 0인 1차원 리스트를 초기화하고싶으면?

//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
n = 10
a = [0] * n

 

인덱싱과 슬라이싱

  • 인덱싱 : 인덱스값을 이용하여 리스트의 특정한 원소에 접근하는것

인덱스가 음수 -> 리스트의 맨 뒤부터 원소 접근

a = [1, 2, 3, 4, 5]
a[-1] //5
a[-3] //3
a[2] = 7 //a = [1, 2, 7, 4, 5]

 

  • 슬라이싱 : 인덱스값을 이용하여 리스트의 연속적인 위치를 갖은 원소들을 가져오는것 => [시작인덱스:끝인덱스-1]
a = [1, 2, 3, 4, 5]
a[1:4] // 2, 3, 4

 

리스트 컴프리헨션

대괄호 안에 조건문과 반복문을 넣는방식으로 리스트를 초기화하는방법

 

//0부터 19까지의 수 중에 홀수만 포함하는 리스트
array = [i for i in range(1, 20) if i%2 == 1]

//1부터 9까지 수의 제곱값을 포함하는 리스트
array = [i*i for i in range(1, 10)]

//NXM 크기의 2차원 리스트 초기화
//[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
n = 3
m = 4
array = [[0]*m for _ in range(n)]

2차원 크기의 리스트를 초기화할때에는 반드시 리스트 컴프리헨션을 이용해야한다. ★

 

리스트 관련 메소드

append() 변수명.append() 리스트에 원소를 삽입할때 O(1)
sort() 변수명.sort() 오름차순 정렬 O(NlogN)
변수명.sort(reverse=True) 내림차순 정렬
reverse() 변수명.reverse() 원소의 순서를 뒤집기 O(N)
insert() 변수명.insert(인덱스, 값) 매개변수인 인덱스에 값을 넣을때 사용 O(N)
count() 변수명.count(값) 매개변수인 값을 가지는 데이터의 개수 O(N)
remove() 변수명.remove(값) 매개변수인 값을 제거함 -> 여러개가 있을때 하나만 제거 O(N)
a = [1,4,3]

a.append(2)
//a = [1, 4, 3, 2]

a.sort()
//a = [1, 2, 3, 4]

a.sort(reverse=True)
//a = [4, 3, 2, 1]

a.reverse()
//a = [1, 2, 3, 4]

a.insert(2, 3)
//a = [1, 2, 3, 3, 4]

a.count(3)
//2

a.remove(1)
//a = [2, 3, 3, 4]

특정한 값의 원소를 모두 제거하려면?

 

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

result = [i for i in a if i not in remove_set]
//[1, 2, 4]

 

튜플 자료형

  • 한번 선언된 값은 변경할 수 없다.
  • 소괄호(())로 표현한다.
  • 리스트에 비해 공간적으로 효율적이다.
  • 원소의 성질이 서로 다를때 주로 사용한다.

사전 자료형

키와 값의 쌍을 데이터로 가지는 자료형

//빈 딕셔너리 선언법1
a = dict()

//빈 딕셔너리 선언법2
a = {}

 

사전 자료형 관련 함수

keys() : 키 데이터만 뽑아 리스트 생성

values() : 값 데이터만 뽑아 리스트 생성

items() : (키, 값) 쌍을 뽑아 리스트 생성

 

※ 키, 값 쌍에서 키나 값을 각각 접근하기

for key, value in dict.items():    
	실행할 코드
//빈 딕셔너리 생성
data = dict()

//딕셔너리 초기화
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

print(data)
//{'사과': 'Apple', '바나나':'Banana', '코코넛':'Coconut'}

key_list = data.keys()
//dict_keys(['사과', '바나나', '코코넛'])
value_list = data.values()
//dict_values(['Apple', 'Banana', 'Coconut'])

 

집합 자료형

  • 중복을 허용하지않는다 -> 중복을 허용하지 않는 자료형으로 사용할 때 편리함
  • 순서가 없다. -> 인덱싱으로 값을 얻을 수 없음
  • 초기화는 set() 함수 or { } 안에 ,를 기준으로 구분하여 넣음
data = set([1, 1, 2, 3, 4, 4, 5])
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}

 

집합 자료형 관련 함수

add() : 데이터 하나 추가

remove() : 특정값 제거

update() : 데이터 여러개 추가

 

data = set([1, 2, 3])

data.add(4)
//{1, 2, 3, 4}

data.remove(3)
//{1, 2, 4}

data.update([5, 6])
//{1, 2, 4, 5, 6}

 

출처 : 이것이 취업을 위한 코딩테스트다 with Python

 

반응형