선형 배열 (linear array)
- 배열 (array) : 같은 종류의 데이터(원소)들을 순서대로 늘어 놓은 것
- 파이썬에는 따로 array가 존재하지 않는다
- 리스트 (list) : 파이썬에서 array를 대체하는 융통성 있는 내장 자료구조
- 서로 다른 데이터 타입의 원소들을 한 리스트 안에 담을 수 있다 ex) L=['Bob', 1, 3.14]
- 리스트 속 원소들의 길이가 달라도 상관 없다 ex) L=['Bob, Cat','Spam','Programmers']
리스트 연산
append(원소 끝에 붙이기)
L=['monkey','cat','dog','elephant']
L.append('gorilla')
print(L)
>>>['monkey','cat','dog','elephant','gorilla']
- O(1)의 연산
pop(원소 끝에서 가져오기)
L=['monkey','cat','dog','elephant']
print(L.pop()) #'elephant'반환
print(L)
>>>'elephant'
>>>['monkey','cat','dog']
- pop()함수는 마지막 원소를 반환하는 리스트 함수 (뒤에 나오는 del함수와의 차이점)
- 반환된 마지막 원소는 자동으로 리스트에서 삭제된다
- O(1)의 연산
insert(원소 삽입)
- L.index(자리 인덱스, 값)
- 원하는 삽입 자리에 값을 넣는 것
L=[1,20,3,7,9]
L.insert(3,6)
L
>>>[1,20,3,6,7,9]
- O(n)의 연산
del(원소 삭제)
- del L[자리 인덱스]
- 원하는 위치의 값을 삭제
- L.remove(삭제할 아이템)과의 차이 : L.del()는 위치로 삭제, L.remove()는 아이템으로 삭제
- L.pop(자리인덱스)과의 차이:
- pop()는 원소를 삭제, 그리고 삭제하는 원소를 반환 해준다
- del()과 remove()는 반환값이 없다
del()
L=[1,20,3,7,9]
del L[2]
L
>>>[1,20,7,9]
remove()
L=[1,20,3,7,9]
L.remove(1)
L
>>>[20,3,7,9]
pop()
L=[1,20,3,7,9]
L.pop(2)
>>>3
print(L)
>>>[1,20,7,9]
- O(n)의 연산
index(원소 탐색)
L=[1,20,3,7,9]
L.index(3)
>>>2
L=[1,20,3,7,9]
L.index(54)
>>>ValueError: 54 is not in list (error)
Challenge
challenge1: sorted list에 insert하는 코드 작성해보기
- 리스트 L과 정수 X(위치)를 인자로 받아서 원소를 X위치에 삽입하고 결과로 삽입된 정렬 리스트를 반환하는 함수
- 예 ) L=[20, 37, 58, 72, 91] 이고 X=65면, 리턴값은 [20, 37, 58, 65, 72, 91]
def solution(L, x):
answer = []
flag=0
for i in range(len(L)):
if x<L[i]:
flag=1
L.insert(i,x)
break
if flag==0:
L.append(x)
answer=L
return answer
challenge2: list에서 원소를 모두 찾아내는 코드 작성해보기
- 리스트 L과 X(원소)를 인자로 받아서 원소 X가 발견되는 모든 위치 인덱스를 리스트로 반환하는 함수
- 예) L=[64, 72, 83, 72, 54] 이고 x=72면, 리턴값은 [1,3]
- 예) L=[64, 72, 83, 72, 54] 이고 x=83면, 리턴값은 [2]
- 예) L=[64, 72, 83, 72, 54] 이고 x=844면, 리턴값은 [-1] #없으면 -1 리턴
def solution(L, x):
answer = []
for i in range(len(L)):
if(L[i]==x):
answer.append(i)
if len(answer)==0:
answer.append(-1)
return answer
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[프로그래머스][python] 최대 용량이 정해진 FIFO 큐 클래스 (0) | 2021.01.12 |
---|---|
[python] queue사용법( Queue module의 Queue class) (0) | 2021.01.11 |
[python] queue 사용법 (collection 모듈 deque) (0) | 2021.01.11 |