- 해시 테이블의 정체는 뭔가?
- 자료구조를 만들면 하는 일 - 순회와 탐색
- 이진탐색을 그냥 할 수도 있고 자료구조로 만들어서 넣어놓을 수 있는데 넣어놓는 것을 이진탐색트리라고 한다.
- 시간 복잡도는 - n x n , n x log(n) => 이거 두개가 이렇게 되는 이유는 후자를 트리의 구조로 생각하면 편하다. 트리가 굉장히 비효율적으로 나누어지면, 링크드리스트와 똑같아지고, 탐색에 걸리는 시간복잡도가 n 이 된다. 트리를 효율적으로 나누면, 탐색에 걸리는 시간복잡도가 log(n)이 된다.
2 번째 열을 선택하고 싶다면, 다음과 같이 list comprehension 을 적용할 수 있다.
column2 = [r[1] for r in array]
다음과 같이 매핑을 하는 것도 가능하다. 하지만 가독성이 안좋다.
list(map(lambda x: x[1], arr))
예를들어, 다음배열에서 0 이 아닌, 원소를 찾고자 한다면,
next 함수와 제너레이터를 활용할 수 있다.
array = [0, 0, 0, 1, 2]
find_not_zero = next(x for x in array if x != 0)
인덱스를 찾고자한다면 다음과 같이 할 수 있다.
find_not_zero = next(i for x, i in enumerate(array) if x != 0)
next 는 generater 를 인수로 받는 연산으로, generator 에서 나오는 다음값을 반환한다. 특정한 자료를 소비하는 generator 를 정의하고, next 연산을 수행하면, 해당 원소는 자료에서 소모된다.