새로 알게 된 점

파이썬 deque 함수

한사공사 2024. 7. 8. 15:18

https://siloam72761.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EB%8D%B0%ED%81%ACdeque%EC%97%90-%EB%8C%80%ED%95%9C-%EB%AA%A8%EB%93%A0-%EA%B2%83-%EC%A0%95%EC%9D%98-%ED%95%A8%EC%88%98-%ED%99%9C%EC%9A%A9

참고해서 작성했습니다.

 

 Deque 함수들

함수 실행시간 설명
append(x) O(1) 데크의 오른쪽에 x를 추가합니다.
appendleft(x) O(1) 데크의 왼쪽에 x를 추가합니다.
clear() O(1) 데크에서 모든 요소를 제거하고 길이가 0인 상태로 만듭니다.
copy() O(N) 데크의 얕은 복사본을 만듭니다.
count(x) O(N) x 와 같은 데크 요소의 수를 셉니다.
 
extend(iterable) O(K) iterable 인자에서 온 요소를 추가하여 데크의 오른쪽을 확장합니다.
extendleft(iterable) O(K) iterable에서 온 요소를 추가하여 데크의 왼쪽을 확장합니다. 일련의 왼쪽 추가는 iterable 인자에 있는 요소의 순서를 뒤집는 결과를 줍니다.
index(x[, start[, stop]]) O(N) 데크에 있는 x의 위치를 반환합니다 (인덱스 start 또는 그 이후, 그리고 인덱스 stop 이전). 첫 번째 일치를 반환하거나 찾을 수 없으면 ValueError를 발생시킵니다.
insert(i, x) O(N) x를 데크의 i 위치에 삽입합니다.
삽입으로 인해 제한된 길이의 데크가 maxlen 이상으로 커지면, IndexError가 발생합니다.
pop() O(1) 데크의 오른쪽에서 요소를 제거하고 반환합니다. 요소가 없으면, IndexError를 발생시킵니다.
popleft() O(1) 데크의 왼쪽에서 요소를 제거하고 반환합니다. 요소가 없으면, IndexError를 발생시킵니다.
remove(value) O(N) value의 첫 번째 항목을 제거합니다. 찾을 수 없으면, ValueError를 발생시킵니다.
reverse() O(N) 데크의 요소들을 제자리에서 순서를 뒤집고 None을 반환합니다.
rotate(n=1) O(K) 데크를 n 단계 오른쪽으로 회전합니다. n이 음수이면, 왼쪽으로 회전합니다.

데크가 비어 있지 않으면, 오른쪽으로 한 단계 회전하는 것은 d.appendleft(d.pop())과 동등하고, 왼쪽으로 한 단계 회전하는 것은 d.append(d.popleft())와 동등합니다.

maxlen   데크의 최대 크기 또는 제한이 없으면 None.

 

 Deque 생성

from collections import deque

#deque 선언
queue = deque(['this', 'is', 'deque'])

print(queue)

 

실행결과:

deque(['this', 'is', 'deque'])

 

Deque 활용

from collections import deque

d = deque([1,2,3,4,7,2])

d.append(5)
print(d)

print("인덱스  0~4 사이에 4 찾기")
print(d.index(4, 0, 5))

print("2의 원소 개수는?")
print(d.count(2))

print("rotate(회전) 한 후")
# 뒤에 있는 숫자가 앞으로 온다
d.rotate(3)
print(d)

print("deque 뒤집기")
print(deque(reversed(d)))

 

실행결과:

deque([1, 2, 3, 4, 7, 2, 5])
인덱스  0~4 사이에 4 찾기
3
2의 원소 개수는?
2
rotate(회전) 한 후
deque([7, 2, 5, 1, 2, 3, 4])
deque 뒤집기
deque([4, 3, 2, 1, 5, 2, 7])

'새로 알게 된 점' 카테고리의 다른 글

python round 함수  (0) 2024.06.27
sys.stdin.readline() 관련 알게 된 점  (0) 2024.06.25