1. 파이썬의 배열은 리스트다.
파이썬의 배열은 배열이 아니라 리스트이다.
왜 그럴까? 같이 알아보자.
a) 파이썬의 배열은 배열의 특징을 갖지 않는다.
컴퓨터 공학의 측면에서 보면 '배열'은 고정된 크기를 갖는다.
그리고 배열의 요소는 모두 동일한 크기를 갖는다는 특징이 있다.
하지만, 파이썬의 배열은 고정된 크기를 갖지 않는다. 이는 '리스트'의 특징이다.
b) Dynamic Array
컴퓨터 공학에서 리스트는 index가 아니라 pointer를 사용한다.
포인터는 다음 요소의 값을 가리키는 주소값을 담고 있는 변수다.
이를 메모리 관점에서 보면,
리스트의 요소들은 연속적인 메모리 주소값을 할당받는게 아니라(이는 배열의 특징이다.)
메모리의 여기 저기의 주소값을 할당받아 그 위치에 값이 저장되는 구조를 이룬다.
그러나,
파이썬의 배열은 리스트의 성격을 가짐에도 불구하고 그 내부의 구현은 배열처럼 되어있다.
이를 Dynamic Array 라고 부른다.
즉, index를 사용하면서 마치 배열처럼 리스트의 요소들이 연속적인 메모리 주소값을 할당 받는다.
더불어, append와 pop과 같은 배열에서 사용하는 고급 메소드를 지원한다.
c) 결론 - 그럼 파이썬의 배열은 리스트이면서 배열인걸까?
파이썬의 배열은 배열보다 리스트에 가깝다. 그래서 배열 보다 파이썬 리스트라고 부른다.
그 이유는 다음과 같다.
- 파이썬 리스트의 index는 배열의 index와 기능적으로 다르다.
▶ 배열의 index는 직접적으로 데이터에 접근이 가능하다.
▶ 파이썬의 index는 몇번째에 위치하는 데이터인지를 알려주는 정도다.
- 파이썬 리스트의 근본은 배열이지만 결국 리스트다.
▶ 고정된 크기의 공간을 가지지 않는다.
2. 배열에서 사용할 수 있는 메소드
a) min(), max()
- 배열의 요소 중 최대값 또는 최소값을 찾고 싶을 때 사용한다.
- 최대값과 최소값을 반환한다.
arr[1,2,3,4,5]
minNum = min(arr) # 1을 반환한다.
maxNum = max(arr) # 5를 반환한다.
b) index()
- 배열의 요소 중 어떤 값이 몇번째 인덱스에 위치하였는지를 알 수 있다.
- 해당 요소의 인덱스 값을 반환한다.
arr = [1,2,3,4,5]
print(arr.index(1)) # 0을 반환한다
c) 배열의 중복값을 제거하는 방법
[Set을 이용하는 방법]
- set은 순서가 없고 unique한 값을 갖는다.
- 즉, 중복값을 허용하지 않는다는 특징이 있다.
arr = [1,1,2,2,3,3]
arr = set(arr) # {1,2,3}을 반환한다.
arr = list(arr) # [1,2,3]을 반환한다.
[if문을 이용하는 방법]
- if문을 이용하여 중복값을 걸러내는 방법은 append를 사용할 때이다.
- 기존의 배열에 존재하는 요소와 중복된 값을 받고싶지 않은 경우 사용할 수 있다.
arr[1,2,3]
if 4 not in arr:
arr.append(4)
elif 3 not in arr:
arr.append(3)
d) filter
- 특정 조건에만 해당하는 리스트의 요소를 걸러내고 싶을 때 사용한다.
- 아래의 링크에 설명이 정말 잘 나와 있다.
- 두가지 모두 읽어보기를 바란다.
https://m.blog.naver.com/wideeyed/221839555992
https://coding-groot.tistory.com/21
'Algorithm > 알고리즘 공부노트' 카테고리의 다른 글
2. Array(배열) - Bubble Sort(버블정렬) (0) | 2021.08.21 |
---|---|
1. Array(배열) - 기본 개념 (0) | 2021.08.20 |
파이썬 - filter와 lambda, map 사용방법 (0) | 2021.08.06 |
시간복잡도 완전정복(1) (0) | 2021.08.04 |
입출력과 사칙연산 메소드 정리 (0) | 2021.07.26 |
댓글