-
[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