python에서 array와 list는 다른거지만 유사하다. 두개를 비교하자면 array가 데이터를 적게사용한다. 하지만 list를 많이 사용한다.
array사용은 array함수를 import해야함
Array(List)의 특징
- 순차적으로 데이터 저장
- 자료구조에 저장하는 데이터를 일반적으로 요소(element)라고 함
- 연결된 데이터들을 순차적으로 저장할 때 사용
- 순서가 상관없더라도 서로 연결된 데이터를 저장할 때 사용
- 삽입 순서대로 저장
- 이미 생성된 리스트도 수정가능
- Multi-dimentional Array(다중차원배열) - array의 요소가 array가 될 수 있음
Array(List)의 단점
- 중간의 요소를 추가,삭제하면 뒤에 있는 요소들은 앞으로 한칸씩 이동해야함
=> 배열에서 요소를 추가,삭제하는 것이 다른 구조에 비해 느릴수있음- 요소를 추가,삭제하는 과정이 코드상에서는 한줄이지만 실제 메모리에서 이루어지는 작업은 훨씬 큼
- array(list)는 정보가 자주 삭제되거나 추가되는 데이터를 담기에 적절치않음
Array Resizing(사이즈 재조정)
- 배열이 처음 생성될 때 어느정도 메모리를 미리 할당(pre-allocation)
- 처음 할당한 메모리 이상으로 요소들이 많아지면 메모리를 더 할당해야 함(resizing)
- 배열의 resizing은 상대적으로 오래걸리는 operation
- 사이즈 예측이 잘 안되는 데이터를 다루기에 적절하지않다.
Array(List) 사용하기 좋은 경우
- 순차열적인 데이터를 저장할 때
- 다차원 데이터를 다룰 때
- 어떠한 특정요소를 빠르게 읽어야 할 때
- 데이터 사이즈가 급변하게 자주 변하지 않는 것
- 요소를 자주 삭제하거나 추가하지 않는 것
- array(list)와 유사한 순차적 저장가능한 순열자료구조
- 한 번 정의되면 수정이 불가능
- 2~3개 정도 적은 수의 소규모 데이터를 저장할 때 많이 사용
- 함수에서 리턴값을 한개이상 리턴하고 싶을 때 자주 사용
enumerate 함수
ex)
def two_sum(nums, target):
for i_index, i_value in enumerate(nums):
for j_index, j_value in enumerate(nums):
sum = i_value + j_value
index_list = [i_index, j_index]
if sum == target:
return index_list
# i_index, i_value값을 따로 지정해주면 i_index에는 인덱스 번호가 들어가고,
i_value에는 value값이 들어간다.
그래서 value값을 더하고 인덱스 번호만 따로 리턴할 수 있다.