Python의 List
- 다른 언어랑은 달리 자료형에 제약이 없고 변수 선언 시 길이를 정해주지 않아도 됨
- 아래 두 연산은 모두 끝에 원소를 붙이는 것이기 때문에 포인터 이동이 필요하지 않아 연산이 빠름
.append(e)
: 맨 끝에 원소 하나를 붙인다
.pop()
: 맨 끝의 원소 하나를 꺼낸다- 아래 연산들은 인덱스를 정하고 포인터 이동이 일어나기 때문에 배열의 길이에 비례하여 시간이 걸림
.insert(i, e)
: i위치에 e원소를 넣는다
del 삭제할원소
: 원소를 삭제한다
.index(e)
: 원소의 인덱스 반환한다.
sorted()
와 List의 정렬 메소드.sort()
를 제공한다.sorted()
: 정렬 대상인 List를 변경하지 않고 새로운 정렬된 List를 반환.sort()
: 정렬 대상을 정렬된 List로 변경함key
파라미터에 정렬 기준을 설정한다. 대부분 lambda
로 설정함reverse
True일 때 내림차순, False일 때 오름차순(default값) # 1. 도시이름 길이로 오름차순 정렬
cities = sorted(cities, key=lambda x: len(x))
# 2. 도시이름 길이로 내림차순 정렬
cities = sorted(cities, key=lambda x: len(x), reverse=True)
# 1. 도시의 인구 수로 오름차순 정렬
cities = sorted(cities, key=lambda x: x['population'])
# 2. 도시의 인구 수로 오름차순 정렬 (x 앞에 -(마이너스) 붙여주면 됨!)
cities = sorted(cities, key=lambda x: -x['population'])
👉 이진탐색이 선형탐색보다 빠르지만 정렬이 되어야한다는 조건이 있기 때문에 정렬에 드는 비용이 크거나 여러번에 배열을 탐색할 것이 아니라면 선형탐색이 더 나을 때도 있다.
def recursive_bin(L, x, l, u):
if l > u:
return -1
mid = (l + u) // 2
if x == L[mid]:
return mid
elif x < L[mid]:
return recursive_bin(L, x, l, mid - 1)
else:
return recursive_bin(L, x, mid + 1, u)