it공부 (개념)/자료구조와 알고리즘 그리고 파이썬

파이썬 자료구조(data structure)의 속성. sequence. mutable

cantor 2023. 1. 1. 20:03

 

 

 

 

Sequence

(시퀸스)수 또는 다른 대상의 순서가 있는 나열

list(리스트), tuple(튜플), and string(스트링)

    1. iterable(반복가능): for loop나 "in" 키워드 뒤에 집어넣을 수 있다. 출력결과
    2. list1 = [1, 2, 3, 4, 5] tuple1 = (1, 2, 3, 4, 5) string1 = "12345" for item in list1: print(item) for item in tuple1: print(item) for item in string1: print(item)

  1. indexed(번호가 있다): "[]" 중괄호를 이용하여 Sequence속의 개별 element에 접근 할 수있다.
    번호는 0번부터 시작하며, 음수를 사용하여 접근할 수 도있다.
                    list1 = [1, 2, 3, 4, 5]
                    tuple1 = (1, 2, 3, 4, 5)
                    string1 = "12345"
                    
                    print(list1[2])
                    print(tuple1[2])
                    print(string1[2])
                
    출력결과

    tip 길이 n인 sequence는 [-n,n-1] 구간 내의 정수로 접근 할 수있다.
    더 작은수나 더큰수를 대입해도 IndexError 오류가 안나게 하려면 %n연산자를 사용하면 좋다
  2. sliceable(자르기 가능): "[:]" 연산자를 이용하여 Sequence의 일부만을 잘라낼 수있다.
                list1 = [1, 2, 3, 4, 5]
                tuple1 = (1, 2, 3, 4, 5)
                string1 = "12345"
                new_list = list1[2:4]
                new_tuple = tuple1[2:4]
                new_string = string1[2:4]
                
                print(new_list, new_string, new_tuple)
                
    출력결과

mutable(변형가능) vs immutable(변형불가능)

mutable: 특정 변형을 가하면 그 자료구조 그대로 변한다

immutable: 특정 변형을 가하면 동일한 자료구조를 새로 만들어 변형된 형태로 저장해준다.

  1. mutable
    종류: List(리스트) dictionariy(딕셔너리) set(집합)
    • 내용 수정가능
      mutable한 자료구조들은 선언한 이후에 그 내부 element를 추가 및 삭제 할 수있다.
    • 크기가 유동적이다.append(), update()를 이용해서 element를 추가하면, 사이즈가 증가한다
    • argument로 사용가능하다
      mutable한 자료구조들은 함수에 대입되어 변형될 수 있다
      새로운 변수를 선언하여 바뀐값을 저장하여 돌려주는게아니라, 대입된 변수가 바뀐다.
  2. immutable
    종류: String(문자열), tuple(튜플), number(숫자)
    • 수정 불가능
      한번 선언된 immutable한 자료구조들은 element를 추가하거나 삭제하는것이 불가능하다
      만약 그런 작업을 했다면, 그저 element를 추가하거나 삭제한 새로운자료구조를 만든후, 기존변수에 대입한것이다.
    • 크기가 변하지 않는다.
      한번 선언한 순간 고정된 크기를 갖는다.
    • 안정적
      element의 추가 삭제 및 변형이 안되기때문에 프로그램이 실행되는 내내 element가 변하지 않는다
      만약에 프로그램의 앞부분에 바뀌지않는 값들을 저장할 필요가 있을경우엔 immutable한 자료구조를 사용하는것이 좋다
      예시, 트럼프카드게임의 카드세트
      나는 잘모르지만, concurrent, multithread의 실행에 있어 더 안정적이라 한다.

변형에대한 추가설명
list1.append("h")
-> list1을 변형하여 "h" element를 추가한다
list1 = list1 + ["h"]
-> list1이 저장된 새로운 list와 ["h"]가 들어있는 리스트를 만들고, 둘이 합쳐진 리스트를 만든후 list1에 추가한다.
일반적으로 immutable한 자료구조들의 변형과정은 전부 후자로, 전자에비해 자원소모가 심하다.

 

 

 

 

 

자료구조란?

 

데이터를 저장하는 구조.

데이터를 입력받아 저장하는 방식에 따라 구분된다.

 

어떤 자료구조를 사용하느냐에 따라 데이터 저장 및 탐색의 방법과 효율성에 차이가 생긴다.

 

파이썬 기본 자료구조 : list, dictionary, tuple, set

 

자료형이란? 

 

데이터의타입.

데이터가 처리되는 방식에 따라 구분된다.

 

파이썬 자료형: int, float, boolean, strings

 

**데이터타입을 그 데이터가 속하는 class, object 명으로 부르는경우가 많다.

BeautifulSoup 오브젝트 -> BeautifulSoup 타입 변수