선형 배열(Linear Arrays)
선형 배열은 데이터들이 선처럼 일렬로 늘어선 형태를 말한다. 보통 프로그래밍에서 배열(array) 라고 하면 같은 종류의 데이터가 줄지어 늘어서 있는 것을 말하는데, Python에서는 서로 다른 종류의 데이터 또한 줄세울 수 있는 list 라는 데이터형이 있다.
Python 리스트에 활용할 수 있는 연산들
리스트의 인덱싱
파이썬의 리스트의 시작은 0부터이다.
리스트의 순서대로 요소를 출력할 수 있고, 또 -를 붙여 뒤에부터 요소를 출력할 수 있다.
L = ['a', 'b', 'c'] print(L[0]) # a print(L[-2]) # b
리스트의 슬라이싱
문자열과 같이 리스트도 슬라이싱 기법을 쓸 수 있다.
리스트명[a:b]를 하게되면 a이상 b미만을 출력한다.
리스트명[:b]를 하게되면 처음부터 b미만을 출력한다.
리스트명[b:]를 하게되면 b이상부터 끝까지 출력하게 된다.
L = ['a', 'b', 'c', 'd'] print(L[0:2]) # ['a', 'b'] print(L[:2]) # ['a', 'b'] print(L[2:]) # ['c', 'd']
리스트 연산
리스트 마지막에 요소 추가와 삭제
리스트의 길이와 상관없이 빠르게 요소를 추가하고, 삭제할 수 있는 함수다.
append()는 리스트의 맨 뒤에 추가해주고, pop()은 맨뒤의 요소를 제거하고 값을 반환한다.
pop 함수에 값을 주게 된다면 그 값에 해당하는 리스트 인덱스의 요소가 삭제된다.
L = ['a', 'b', 'c', 'd'] L.append('NEW') print(L) # ['a', 'b', 'c', 'd', 'NEW'] L.pop() print(L) # ['a', 'b', 'c', 'd']
요소 삽입과 삭제
리스트의 크기가 크면 오래 걸리는 함수들이다.
insert(index, value)는 index의 위치에 value를 삽입한다.
이때 리스트의 전체 크기가 증가하며(5-> 6), 삽입했던 위치보다 뒤에 있는 요소들은 맨 뒤의 요소부터 하나씩 밀려나게 되면서 시간이 오래걸리게 된다.
L = [20, 23, 36, 41, 50] L.insert(2, 33) # [20, 23, 33, 36, 41, 50]
del()도 삭제하려는 리스트와 요소를 함께 넣어주면 제거가된다.
insert()와 같이 del() 또한 시간이 오래걸리는 함수이다.
제거하려는 리스트의 요소보다 뒤에 있는 것들을 한칸씩 당기게 되어 제거하여 시간이 오래걸린다.
L = [20, 23, 36, 41, 50] del(L[2]) # [20, 23, 41, 50]
다양한 리스트 관련 함수들
리스트 뒤집기
reverse()함수는 리스트의 요소들을 거꾸로 뒤집어준다.
L = [20, 23, 36, 41, 50] L.reverse() # [50, 41, 36, 23, 20]
리스트 위치 반환
index(x) 함수는 리스트에 값이 있으면 x의 인덱스 값을 알려준다.
값이 없을 시에는 ValueError가 나타난다.
L = [20, 23, 36, 41, 50] L.index(23) # 1
리스트 요소 제거
remove(x)는 리스트에서 첫번째로 나오는 x를 삭제한다.
L = [36, 20, 23, 36, 41, 50] L.remove(36) # [20, 23, 36, 41, 50]
리스트에 포함된 요소 x의 개수 세기
count(x)는 리스트 안에 x가 몇개 있는지 조사하여 그 개수를 돌려주는 함수이다.
L = [20, 30, 20, 40, 12, 20] a.count(20) # 3
리스트 확장
extend(x)에서 x에는 리스트만 들어갈 수 있으며, 원래의 리스트 뒤에 x의 리스트를 추가한다.
L = [20, 30, 20, 40, 12, 20] L.extend([10, 5]) # [20, 30, 20, 40, 12, 20, 10, 5]
리스트 정렬
sort()와 sorted() 함수 2개가 있다.
sort()는 기존 리스트 자체를 순서대로 바꾼다.
sorted()는 기존 리스트는 변화하지않고 정렬된 새로운 리스트를 반환한다.
두함수 모두 괄호 안에 reverse=True를 넣으면 거꾸로 출력이 가능하다.
L = [10, 1, 2, 5, 7] L2 = sorted(L) # [1, 2, 5, 7, 10] print(L) # [10, 1, 2, 5, 7] L.sort() print(L) # [1, 2, 5, 7, 10]
'CS > Data Structure' 카테고리의 다른 글
환형 큐(Circular Queues) (0) | 2022.09.18 |
---|---|
큐 (Queues) (0) | 2022.09.11 |
스택 (Stacks) (0) | 2022.08.31 |
양방향 연결 리스트(Doubly Linked Lists) (0) | 2022.08.30 |
연결 리스트 (Linked Lists) (0) | 2022.08.21 |