선형 배열(Linear Array)
선형 배열(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]