1. 기본 컬렉션 타입 코드는 외울 수 있도록하기! 예시코드들의 시간복잡도 정리하기
리스트
- append(item) : 리스트의 맨뒤에 추가한다.
- 시간복잡도 : O(1)
- insert(idx, item) : 리스트 idx에 추가하기
- 시간복잡도: O(n)
- pop() : 리스트 마지막 요소 제거
- 시간복잡도 : O(1)
- pop(0) 하게되면 리스트만큼 돌아야하므로 시간 복잡도 : O(n)
- remove(item) : 리스트에서 item을 찾아 제거
- 시간복잡도 : O(n)
- extend(li) : 리스트에 li의 모든 요소를 추가
- 시간복잡도 : O(k) (k: li의 길이)
- lst[k] : 리스트의 k 위치에 접근
- 시간복잡도 : O(1)
- item in lst : lst에 item이 있는지 검사
- 시간복잡도 : O(n)
- 예시코드
딕셔너리
- dic.get(key) / dic[key] : key에 해당하는 값 반환
- dic.get(key) 은 key가 없으면 none을 반환
- dic[key]은 key가 없으면 keyError를 발생, except KeyError as e: 로 catch할 수 있다.
- 시간복잡도 : O(1)
- dic.pop(key) : key에 해당하는 항목 제거
- key가 없으면 keyError를 발생, except KeyError as e: 로 catch할 수 있다.
- 시간복잡도 : O(1)
- 'key' in dic : dic에 key가 있는지 검사
- 시간복잡도 : O(1)
- 예시코드
집합
- 집합 s 생성 s = set()
- s.add(item) : s집합에 item 추가
- 시간복잡도 : O(1)
- s.remove(item) / s.discard(item) : s집합에서 item 제거
- s.remove(item) 는 key가 없으면 keyError를 발생, except KeyError as e: 로 catch할 수 있다.
- s.discard(item) 는 key가 없어도 에러를 발생시키지 않는다.
- 시간복잡도 : O(1)
- s1.union(s2) : 합집합
- s1.intersection(s2) : 교집합
- s1.difference(s2) : 차집합
- set(list)
- item in s
- 시간복잡도 : O(1)
- 예시코드
문자열
- ','.join(['a','b','c']) : delimiter 문자열로 배열의 문자열 합치기
- 시간복잡도 : O(n)
- str.replace(old, new) : 문자열 교체
- 시간복잡도 : O(n)
- str.split(sep) : sep 기준으로 문자열 분리
- 시간복잡도 : O(n)
- str.startswith(a) : a로 시작하는지 검사
- str.endswith(a) : a로 끝나는지 확인
- 시간복잡도 : O(k) (k: a의 길이)
- 예시코드
list comprehension
- "List comprehension"은 리스트를 생성하는 간결하고 효율적인 방법입니다.
- 기본 구조는 [expression for item in iterable if condition] 이며, 이 구조를 사용하여 for 문과 if 문을 사용한 루프보다 더 간결하게 리스트를 생성할 수 있습니다.
- List comprehension은 코드를 간결하게 만들고, 코드의 가독성을 향상시킵니다.
- 또한, 내부적으로 최적화되어 일반적인 for 루프보다 빠른 실행 시간을 제공합니다.
- 예시 코드
Q. list comprehension을 이용해서 1~100까지 수 중 3과 9의 공배수인 수만 리스트에 담기도록 구현하기.
li = [i for i in range(1,100) if i%3==0 or i%9 == 0]
print(li)
728x90
반응형
댓글