본문 바로가기

IT/Python

(12)
리스트에서 중복 요소 제거 문제 풀이 def remove_duplicate(arr): | unique_list = [] | seen = set() | | for item in arr: 시간복잡도-->O(N) | | if item not in seen: | | | unique_list.append(item) | | | seen.add(item) | | return unique_list
dictionary 키랑 밸류 값 삭제 방법 파이썬에서 dictionary에서 key 랑 value값 삭제 하는 방법은 예시1] my_dict = {'Name': 'Mark', 'age': 34, 'city': Paris} del my_dict['age'] ----> 시간복잡도 O(1) 하면 나이 있는 부분을 삭제 할 수 있다. 예시2] my_dict = {'Name': 'Mark', 'age': 34, 'city': Paris} my_dict.pop('age') ----> 시간복잡도 O(1) 하면 똑같이 선택한 요소가 삭제 된다. !!주의점 -> 일반 자료구조 알고리즘에서 pop() 기능은 스택에서 맨 마지막 요소를 날리는 건데 여기서는 그거랑 같다고 생각하면 안된다.
set() - 정렬되지 않고 중복되는 것을 허용하지 않는 집합?이라고 보면 된다. set()은 파이썬에서 정렬되지 않고 중복을 허용하지 않는 collection 아니면 집합이라고 보면 된다. 그래서 만약에 list [1, 1, 2, 3, 4, 5, 5]에서 중복을 제거할려면 함수를 사용해서 아래 처럼 사용이 된다. def remove_duplicates(coll): unique_list = [] seen = set() for item in coll: if item not in seen: unique_list.append(item) seen.add(item) return unique_list
Python list 주요사항 Python list는 유용한 점이 많긴 하다. 선언을 a = [] 이런식으로 빈 리스트를 선언 할 수 있고 - list.pop() - list.pop(인덱스번호) => queue처럼 맨 앞에 것을 뽑아낼 수가 있다. 대신 사간 복잡도는 O(n) - list.delete() 시간 복잡도 O(n) - list.remove() 시간 복잠도 O(n) 위에 처럼 직관 적으로 쓸 수 있다. 다만 주의점이 있다. 만약, a = ["a", "b", "c"] b = a b[1] = "z" 쓰면 a 리스트와 b list 둘다 ["z", "b", "c"]로 변한다. b가 a의 참조값을 가리키기 때문에 주의 해야한다. 이걸 방지 할려면 a = ["a", "b", "c"] b = a[:] => 쌍따옴표를 붙임으로써 슬라이스 ..