[Python] 파이썬 기본 문법 - 자료형

Seojin Kwak·2023년 4월 18일
0

자료형

수 자료형

정수형

  • 양의 정수, 음의 정수, 0 (형 변환 int)
    코테 출제 대부분의 문제는 정수형을 주로 다룸
a = 1000	# 양의 정수
b = -7		# 음의 정수
c = 0		# 0

실수형

  • 소수점 아래의 데이터를 포함하는 수 자료형 : 변수에 소수점 붙이면 실수형으로 표현 가능 (형 변환 float)
a = 157.93
b = -1837.2
c = 5.		# 소수부가 0일 때 0 생략: 5.0
d = -.7		# 정수부가 0일 때 0 생략: -0.7
  • 지수 표현 방식: e나 E 다음에 오는 수는 10의 지수부
    유효숫자e지수 = 유효숫자 * 10^지수
a = 1e9		# 1,000,000,000
b = 75.25e1	# 752.5
c = 3954e-3	# 3.954

최단 경로 알고리즘 (그래프) : 도달할 수 없는 노드에 대하여 최단 거리를 INF(무한)으로 설정

  • round() : 반올림 내장함수
round(123.456, 2)	# 123.46

💡 연산 : 사칙연산 + 나머지 연산자 많이 사용

  • // : 몫 연산자
  • / : 나누기 연산자. 결과를 실수형으로 반환
  • % : 나머지 연산자
  • ** : 거듭제곱 연산자

리스트

  • 리스트: 여러 개의 데이터를 연속적으로 담아 처리. (배열, table)

초기화

  • 대괄호 안에 원소 넣기. 쉼표로 원소 구분
  • list() 혹은 [] 이용하여 선언
  • 인덱스 값으로 접근 (0부터)
a = [1,3,5,7,9]
print(a[1])		# 3
empty = list()      

인덱싱과 슬라이싱

  • 인덱싱: 인덱스 값을 입력하여 리스트의 특정한 원소에 접근.
    - 인덱스 값: 양, 음 정수 모두 사용 가능 (음의 정수: 원소 거꾸로 탐색)
a = [1,2,3,4,5]
print(a[-1])	# 5
  • 슬라이싱: 연속적인 위치의 원소들 가져오기.
    - 리스트[시작 인덱스: 끝 인덱스] (끝 인덱스: 실제 인덱스보다 + 1)
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)]

_ : 반복문에서 반복 변수값 무시하고 싶을 때 사용

메서드

  • append(): 원소 하나 삽입 O(1)
  • sort(): 오름차순 정렬 O(NlogN)
    sort(reverse = True): 내림차순 정렬
  • reverse(): 리스트 원소 순서 모두 뒤집기 O(N)
  • insert(): 특정 인덱스 위치에 원소 삽입 O(N)
  • count(): 특정 값 갖는 원소 개수 세기 O(N)
  • remove(): 특정 값 갖는 원소 제거. 여러 개면 하나만 제거 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]

문자열

초기화

  • "" 혹은 '' 이용 (\ 이스케이프 문자 사용해서 따옴표를 문자처럼 취급하여 표현)

연산

  • + 사용하여 concatenate: 양의 정수와 곱하면 여러 번 더해짐
  • indexing, slicing 가능 but 특정 인덱스 값 변경 불가
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) 최단 경로 알고리즘 (비용, 노드 번호)
  • 해싱 키 값으로 사용
  • 메모리 효율적 사용

사전

특징

  • Key, Value 쌍을 데이터로 가지는 자료형: 변경 불가능한 자료형을 키로 사용
  • Hash table 이용: 데이터 조회/수정 O(1)
data = dict()
data['사과'] = 'apple'	# 사과: key, apple: value
data['바나나'] = 'banana'
data['오렌지'] = 'orange'
print(data)		# {'사과':'apple', '바나나':'banana', '오렌지':'orange'}

함수

  • keys(): key 데이터만 담은 리스트
  • values(): value 데이터만 담은 리스트
key_list = data.keys()
value_list = data.values()
print(key_list)		# dict_keys(['사과', '바나나', '오렌지'])
print(value_list)	# dict_values(['apple', 'banana', 'orange'])

집합

특징

  • 중복 허용 X
  • 순서 X
  • 데이터 조회/수정 O(1)

초기화

  • list 혹은 string 이용: set() 함수 이용
  • {} 안에 각 원소를 , 기준으로 구분하여 삽입
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}

연산

  • 합집합: a | b
  • 교집합: a & b
  • 차집합: a - b

함수

  • add(): 새로운 원소 추가
  • update(): 새로운 원소 여러 개 추가
  • remove(): 특정 값 갖는 원소 삭제
data.add(4)
data.update([5,6])
data.remove(3)
  • 리스트, 튜플: 순서 O. 인덱싱을 통해 값 얻기
  • 사전, 집합: 순서 X. 인덱싱 불가. 사전의 key, 집합의 element를 이용해 O(1)로 조회

참고: 이것이 취업을 위한 코딩테스트다 with 파이썬
https://youtu.be/m-9pAwq1o3w

profile
Hello, World!

0개의 댓글