파이썬 기초 문법_#1. 자료형

개발새발log·2021년 9월 12일
0

파이썬

목록 보기
1/3

나동빈님의 이코테 2021 강의를 듣고 정리한 파이썬 문법

파이썬의 자료형

정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등

실수형

지수표현 방식

  • e/E 다음에 오는 수는 10의 지수부
    ex. 1e9 = 10의 9제곱

    유효숫자e지수 = 유효숫자x10지수

  • 실수형 데이터로 처리한다
  • 임의의 큰 수를 표현할 때 사용됨
    - 최단경로 알고리즘에선 도달할 수 없는 노드를 무한(INF)로 설정하는데, 이때 1e9 대입하면 된다

⚠️주의

실수형 표현하는 정확도에 한계가 존재한다. 컴퓨터는 2진수 체계이기 때문에!
➡️ round() 함수 이용하기
ex. 123.456을 소수 셋째자리에서 반올림
round(123.456, 2) (출력: 123.46)

수 자료형의 연산

  • 사칙연산과 나머지 연산자 많이 사용됨
  • 나누기 연산 시 주의: 나눠진 결과가 실수형
  • 나머지 연산자(%), 몫 연산자(//), 거듭제곱 연산자(**)

리스트 자료형 (aka. 배열, 테이블)

✔️ C/Java의 배열(Array), 연결리스트(Arraylist), C++의 vector와 유사하다

초기화

  • [] 안에 원소 넣기
  • 비어있는 리스트 초기화: list(), []

리스트의 인덱싱과 슬라이싱

인덱싱(indexing)

  • 리스트의 특정한 원소에 접근하는 것
  • 인덱스값은 양수/음수 모두 가능
    - 인덱스값이 음수인 경우) 원소를 거꾸로 탐색하기

슬라이싱(slicing)

  • 연속적인 위치를 갖는 원소들 가져오기
  • 콜론(:)을 이용하여 시작 인덱스와 끝 인덱스 설정

list comprehension

  • 리스트를 초기화하는 방법 중 하나
    - 대괄호 안에 조건문, 반복문 적용하여 초기화
    ex. 0부터 9까지 수를 포함하는 리스트:
    array= [i for i in range(10)]

  • 2차원 리스트 초기화 시 효과적!
    특히 N*M 크기의 2차원 리스트 한번에 초기화 할 때 유용하다!

array = [[0]*m for _ in range(n)]   #good
array = [[0]*m]*n   #bad

why bad?

  • 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식되기 때문

👀 언더바는 언제 사용되는가?

  • 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_) 사용
    ex. "Hello World" 다섯 번 출력하기
for _ in range(5):
	print("Hello World")

리스트 관련 기타 메소드

  • append(): 리스트에 원소를 하나 삽입할 때 사용된다
  • sort(): 정렬 (내림차순 정렬 시 reverse=True 옵션 추가)
  • reverse(): 리스트의 원소의 순서를 모두 뒤집어 놓는다
  • insert(): 특정한 인덱스의 위치에 원소 삽입
  • count(): 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
  • remove(): 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거함
    - 특정값을 가지는 원소 모두 제거하려면?
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)

문자열 자료형

  • 초기화 시 큰 따옴표(")나 작은 따옴표(') 사용
  • 문자열 연산
    - 연결 시 +, 여러번 더하려면 *
    • 인덱싱, 슬라이싱 가능
    • 그러나 특정 인덱스값 변경은 불가함

튜플 자료형

리스트와 유사하지만 차이점은:

  1. 한번 선언된 값은 변경이 불가하다
  2. 소괄호() 이용
  3. 리스트에 비해 상대적으로 공간효율적이다

튜플 사용하면 좋은 경우

  1. 서로 다른 성질의 데이터를 묶어서 관리하는 경우
    • 최단 경로 알고리즘에서 (비용, 노드번호) 형태로 묶어 사용
  2. 데이터의 나열을 해싱의 키값으로 사용해야 할 때
  3. 리스트보다 메모리를 효율적으로 사용해야 할 때

사전 자료형

  • key와 value의 쌍을 데이터로 가지는 자료형
  • 변경불가능한 자료형을 key로 가질 수 있음
  • 해쉬 테이블을 이용하므로 데이터 조회 및 수정의 시간복잡도가 O(1)

관련 메소드

  • 키와 값을 별도로 뽑아내기 위한 메소드
    - key 데이터만 뽑아서 리스트로 : keys() 함수
    • value 데이터만 뽑아서 리스트로 : values() 함수
#초기화 방법 1
data = dict()
data['사과']='Apple'
data['바나나']='Banana'
data['코코넛']='Coconut'
print(data)

#초기화 방법 2
data2 = {
  '파인애플': 'pineapple',
  '배': 'pear'
}
print(data2)

#특정 키에 매핑되는 값 출력
print(data2['배'])

#키 데이터만 담은 리스트
key_list = data.keys()
#값 데이터만 담은 리스트
value_list = data.values()
print(key_list)
print(value_list)

#리스트 형태로 출력하기(형변환)
print(list(key_list))
print(list(value_list))

#각 키에 따른 값을 하나씩 출력
for key in key_list:
  print(data[key])

집합 자료형

  • 집합의 특징: 중복X, 순서X
    - 특정값의 존재 여부 확인 시 활용!
  • 리스트/문자열을 이용해서 초기화: set() 함수
  • 혹은 중괄호{} 안에 원소를 나열하여 초기화
  • 데이터의 조회 및 수정의 시간복잡도가 O(1)
#집합 자료형 초기화 방법 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)

사전자료형 & 집합자료형의 특징

  1. 리스트나 튜플은 순서가 있기 때문에 인덱싱을 이용해서 값을 얻을 수 있음
  2. 사전자료형, 집합자료형은 순서가 존재하지 않기 때문에 인덱싱으로 값을 얻을 수 없다
    • 사전의 key나 집합의 원소로 O(1)의 시간복잡도로 조회
    • 사전의 key나 집합의 원소로 변경불가능한 문자열이나 튜플을 이용
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글