코딩테스트/파이썬 알고리즘 인터뷰

[파이썬 알고리즘 인터뷰] 4장 - 자료형

지윤공원🌳 2021. 5. 23. 11:06
728x90
시작에 앞서 이 글은 박상길 저자님의 파이썬 알고리즘 인터뷰 책을 읽고 정리한 내용임을 밝힙니다. 

 

파이썬 자료형

(모든 자료형을 언급하지 않고, 주요 자료형만 언급했습니다. )

 

  • 숫자
    파이썬에서는 숫자 정수형으로 int 자료형만을 제공합니다. 
    bool은 논리 자료형이지만 내부적으로 1과 0으로 처리되는 int의 서브 클래스입니다.  (True -> 1, False -> 0)
    클래스 구조 : object > int > bool
    print(True == 1)  # True
    print(False == 0) # True​
  • 매핑 (Mapping)
    매핑은 키와 자료형으로 구성된 복합 자료형입니다. 
    파이썬의 유일한 매핑 자료형은 딕셔너리입니다. 
    # 빈 딕셔너리 선언
    empty_dict01 = {}
    empty_dict02 = dict()
    
    # 값이 있는 딕셔너리 선언
    ages = {"jiyoon": 19, "jiyoung":15}
    prices = {"math_book": 23000, "korean_book":35000}


  • 집합 (Set)
    파이썬의 집합 자료형(set)은 중복된 값을 가지지 않는 자료형입니다. 
    set은 입력 순서가 유지되지 않습니다.
    만약 중복된 값이 생길 시 하나의 값만 유지합니다. 
    딕셔너리와 같이 중괄호 { } 를 사용하지만 키와 값 형태인 딕셔너리와 다르게 set은 값만 선언합니다. 
    # 빈 set 선언
    empty_set01 = set()
    
    # 값이 있는 set 선언
    ages = {3, 4, 2, 3, 5}
    print(ages) # {4, 2, 3, 5}


  • 시퀀스 (Sequence)
    수열과 비슷한 의미로, 어떤 특정 대상의 순서 있는 나열을 뜻합니다. 
    시퀀스는 불변(str, tuple, bytes)가변(list)으로 구분합니다. 
    * 불변 : 값 변경 불가능  /  가변 : 자유롭게 값을 추가, 삭제 가능   
    * str은 불변 객체입니다. 값이 바뀌는 것이 아니라 참조하는 주소가 바뀌는 것입니다. 

원시 타입

원시 타입이란 메모리에 타입 크기만큼의 공간을 할당한 후 그 공간을 오로지 값으로만 채워넣는 것입니다. 

C, java와 다르게 python은 원시 타입을 제공하지 않습니다.

python은 느린 속도와 더 많은 메모리를 감수하는 대신 다양한 기능을 제공하는 객체를 선택했습니다. 


객체

  • 불변 객체
    bool, int, float, tuple, str은 불변 객체입니다. 
    불변 객체는 값이 변하지 않기 때문에 dict의 키나 set의 값으로 사용할 수 있습니다. 
    a = 10
    b = a
    print(id(10)) # 6513274655
    print(id(a)) # 6513274655
    print(id(b)) # 6513274655
  • 가변 객체
    list, dict, set은 가변 객체입니다. 
    다른 변수가 참조하고 있을 때 값이 변경된다면 그 다른 변수의 값도 변경됩니다. 
    a = [1, 2, 3, 4, 5]
    b = a
    print(b) # [1, 2, 3, 4, 5]
    a[2] = 6
    print(a) # [1, 2, 6, 4, 5]
    print(b) # [1, 2, 6, 4, 5]​
  • 속도
    파이썬은 모든 것이 객체로 저장됩니다. 그렇기에 여러 단계의 부가 작업이 필요하기 때문에 속도가 느립니다. 
728x90