• Python_ 자료 구조, 튜플(tuple), 셋(set), 딕셔너리(dictionary)

    2021. 11. 8.

    by. KAEY


    파이썬에서의 자료구조

    자료구조명 특징
    stack 나중에 들어온 값을 먼저 나갈 수 있도록 해 주는 자료구조(last in first out)
    queue 먼저 들어온 값을 먼저 나갈 수 있도록 해 주는 자료구조(first in first out)
    tuple 리스트와 같지만, 데이터의 변경을 허용하지 않는 자료구조
    set 데이터의 중복을 허용하지 않고, 수학의 집합 연산을 지원하는 자료구조
    dictionary 전화번호부와 같이 키(key)와 값(value) 형태의 데이터를 저장하는 자료구조
    여기서 키 값은 다른 데이터와 중복을 허용하지 않음
    collections 모듈 위에 열거된 여러 자료구조를 효율적으로 사용할 수 있도록 지원하는 파이썬 내장(built-in) 모듈

     

     

     

    튜플(tuple)

    리스트와 같은 개념이지만, 값을 변경하는 것이 불가능한 리스트 

    괄호 - ( ) - 를 이용하여 선언 

    리스트형 데이터에서 사용하는 함수를 모두 사용 가능

    튜플은 리스트와 달리 값을 변경할 수 없음

    튜플의 값이 하나인 경우에는 a = (1,)와 같이 끝에 반드시 콤마(,)를 붙여 a가 튜플임을 선언해야 함

    >>> a = (1,2,3)
    >>> print(a + a, a * 2)
    (1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)
    
    >>> len(a)
    3
    
    >>> a[1] = 5
    TypeError: 'tuple' object does not support item assignment

     

     

     

    세트(set)

    값을 순서 없이 저장하면서 중복을 불허하는 자료형 

    수학의 집합과 개념적으로 유사

    >>> s = set([1,2,3,1,2])
    >>> s
    {1, 2, 3}
    >>> s.add(1) # 중복불가로 추가되지 않음
    >>> s
    {1, 2, 3}
    >>> s.remove(1) # 1 삭제
    >>> s
    {2, 3}
    
    >>> s.update([1,4,5,6,7]) # 리스트 추가
    >>> s
    {1, 2, 3, 4, 5, 6, 7}
    >>> s.discard(3) # 3 삭제
    >>> s
    {1, 2, 4, 5, 6, 7}
    >>> s.clear() # 모든 원소 삭제
    >>> s
    set()

     

     

     

    집합 연산

    >>> s1 = set([1,2,3,4,5])
    >>> s2 = set([3,4,5,6,7])
    >>> s1.union(s2) # 합집합
    {1, 2, 3, 4, 5, 6, 7}
    >>> s1 | s2
    {1, 2, 3, 4, 5, 6, 7}
    >>> s1.intersection(s2) # 교집합
    {3, 4, 5}
    >>> s1 & s2
    {3, 4, 5}
    >>> s1.difference(s2) # 차집합
    {1, 2}
    >>> s1 - s2
    {1, 2}

     

    연산 함수 기호
    합집합 union |
    교집합 intersection &
    차집합 difference

     

     

     

    딕셔너리(dictionary) 

    키(key)와 값(value)을 쌍으로 데이터를 저장하는 방법 

    파이썬에서 많이 사용하는 자료구조

    dictionary = {키1:값1, 키2:값2, 키3:값3…}
    >>> student_info = {20140012:'남도산', 20140029:'서달미', 
    20150235:'사혜준', 20150098:'안정하’}
    >>> student_info[20140012]
    '남도산’
    
    >>> student_info[20150125] = '원해효’ # 추가
    >>> student_info
    {20140012: '남도산', 20140029: '서달미', 20150235: '사혜준', 20150098: 
    '안정하', 20150125: '원해효'}
    
    >>> student_info[20150125] = '김진우’ # 재할당
    >>> student_info
    {20140012: '남도산', 20140029: '서달미', 20150235: '사혜준', 20150098: 
    '안정하', 20150125: '김진우'}

     

     


    댓글 (비로그인 댓글 허용하지 않습니다.)