CS/Data Structure

선형 배열(Linear Array)

bestwish 2022. 8. 11. 22:31

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