ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 튜플과 리스트
    자료구조 2022. 10. 4. 19:53

    튜플 : 괄호 () 안에 값과 쉼표를 사용해 생성한다., 불변 시컨스 타임

    튜플의 예 : ('a','b','c')

     

    1.네임드 튜플

    파이썬의 표준 모듈 중 collections에는 네임드 튜플이라는 시컨스 데이터 타입이 있다. 

    네임드 튜플이란? 튜플 항목을 인덱스 위치 뿐만 아니라 이름으로도 참조할 수 있다.

    >>> import collections
    >>> Person = collections.namedtuple('Person', ('name','age','gender'))
    >>> p = Person('hijoo',1,'w')
    >>> p
    Person(name='hijoo', age=1, gender='w')
    >>> p[0]
    'hijoo'
    >>> p.name
    'hijoo'

    ===================================

     

    리스트 : 크기를 동적으로 조정할 수 있는 배열, 가변 데이터 타입

    (일반적으로 데이터에 접근하거나 노드를 삽입할때 배열이 연결리스트보다 시간복잡도가 더 간단하기 때문에 배열을 쓰도록 하자!)

    (1) 리스트 끝에서 항목을 추가하거나 제거할 때 : append(), pop()  -> O(1)

    (2) 리스트 항목 검색해야 하는 remove(), index() -> O(n)

    insert()도 시간복잡도 O(n)

     

    따라서 리스트는 항목을 순서대로 정렬하며 보관하면, 빠른 검색을 제공할 수 있다.

    (만약 검색이나 멤버십 테스트 같은 경우에는 셋이나 딕셔너리와 같은 컬렉션 타입을 선택하도록 하자)

     

    ☑︎ 리스트의 간단한 명령어들 예제

    >>> example = ['apple','orange']
    >>> example.append('grape')
    >>> example
    ['apple','orange','grape']
    >>> example.extend('mango')
    >>> example
    ['apple', 'orange', 'grape', 'm', 'a', 'n', 'g', 'o']
    >>> example.remove('grape')
    >>> example
    ['apple', 'orange', 'm', 'a', 'n', 'g', 'o']
    >>> del example[0]
    >>> example
    ['orange', 'm', 'a', 'n', 'g', 'o']

    ☑︎ 리스트 명령어들의 시간복잡도

    연산 시간복잡도
    인덱스 [] 접근 O(1)
    인덱스 할당 O(1)
    append O(1)
    pop O(1)
    pop(i) O(n)
    insert(i, 항목) O(n)
    del 연산자 O(n)
    삽입 O(n)
    슬라이스 [x:y] 조회 O(k)
    슬라이스 삭제 O(n)
    슬라이스 할당 O(n+k)
    reverse() O(n)
    연결 O(k)
    sort O(n log n)
    곱하기 O(nk)

     

    '자료구조' 카테고리의 다른 글

    [Python] DFS , BFS (1)  (0) 2022.10.05
    [Python] 그리디 알고리즘  (0) 2022.10.05
    코딩테스트 기초  (1) 2022.10.05
    [Python] 순열과 동적계획법  (0) 2022.10.04
    [Python] 문자열 메소드  (0) 2022.09.29

    댓글

Designed by Tistory.