본문 바로가기

💻 Python/🔎기초 Python

7. 리스트(List) 심화 (추가, 삽입, 정렬, Stack, Queue)

7. 리스트(List) 심화

리스트는 []대괄호로 묶어주고, 수정이 가능하다

  • (1) 추가하기(append)
  • (2) 삽입하기(insert)
  • (3) 정렬하기(sort)
  • (4) 리스트로 구현하는 자료 구조 (Stack, Queue, pop, popleft)

(1) 추가하기(append)

  • list에 속한 append()는 리스트의 맨 마지막에 값을 추가
a = [1,2]
a.append(4)
print(a)

#튜플로 실행할 경우 에러 발생 : append는 list에 속한 함수이기 때문에
# a = (1,2)
# a.append(4)
# print(a)
[1, 2, 4]

(2) 삽입하기(insert)

  • list에 속한 insert(index위치,값)는 원하는 위치에 값을 삽입
a = [1,2]
a.insert(0,3)
print(a)

#튜플로 실행할 경우 에러 발생 : insert는 list에 속한 함수이기 때문에
# a = (1,2)
# a.insert(0,3)
# print(a)
[3, 1, 2]

(3) 정렬하기(sort)

  • list에 속한 sort()를 사용하여 순서대로 정렬
a = [1,2,20,4,324,5,3]
a.sort()
print(f"오름차순 정렬 : {a}")
a.sort(reverse=True) #reverse=False인 오름차순이 기본값
print(f"내름차순 정렬 : {a}")

#튜플로 실행할 경우 에러 발생 : sort는 list에 속한 함수이기 때문에
# a = (1,2,20,4,324,5,3)
# a.sort()
# print(f"오름차순 정렬 : {a}")
# a.sort(reverse=True) #reverse=False인 오름차순이 기본값
# print(f"내름차순 정렬 : {a}")
오름차순 정렬 : [1, 2, 3, 4, 5, 20, 324]
내름차순 정렬 : [324, 20, 5, 4, 3, 2, 1]

(4) 리스트로 구현하는 자료 구조 (Stack, Queue)

  • Stack(스택)
    • FILO(First In Last Out 구조)
    • 맨 처음 들어간 것은 가장 나중에 나오는 구조
  • Queue (큐)
    • FIFO(First In First Out 구조)
    • 맨 처음 들어간 것이 맨 처음으로 나오는 구조 (놀이동산 줄: 먼저 줄 선 사람이 먼저 탑승)
#Stack(스택)구조 구현
#리스트의 append()와 pop을 활용하면 스택 구조를 구현할 수 있다. 

a=[]
print(a)
a.append(1) #1추가
print(a)
a.append(2) #2추가
print(a)
a.append(3) #3추가
print(a)
a.pop() #3제외
print(a)
a.pop() #2제외
print(a)
a.pop() #1제외
print(a)
[]
[1]
[1, 2]
[1, 2, 3]
[1, 2]
[1]
[]
#Queue(큐)구조 구현
#리스트의 insert()와 pop()로 큐 형태를 구현할 수는 있지만, 
#스택과 달리 느리게 동작해서 파이썬에서 준비해둔 모듈 사용해서 구현
#collections.deque의 append()와 popleft()를 사용

from collections import deque
q = deque([1,2,3])
print(q)
print("-"*30)
q = deque([])
print(q)
q.append(1) #1추가
print(q)
q.append(2) #2추가
print(q)
q.append(3) #3추가
print(q)
q.popleft() #1제외
print(q)
q.popleft() #2제외
print(q)
q.popleft() #3제외
print(q)
deque([1, 2, 3])
------------------------------
deque([])
deque([1])
deque([1, 2])
deque([1, 2, 3])
deque([2, 3])
deque([3])
deque([])