SharePoint의 계산된 열 | 개요
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
Python 개발자라면 deque 또는 "double-ended queue"에 대해 들어봤을 것입니다. 애플리케이션의 효율성을 높이고 성능을 가속화할 수 있는 강력한 도구입니다.
deque는 컨테이너의 양쪽 끝에서 더 빠른 추가 및 팝 작업을 제공하는 특수 컨테이너 데이터 유형입니다. 따라서 컴퓨팅에서 일반적인 목록과 같은 데이터 유형인 대기열 및 스택을 구현하는 데 유용한 도구입니다.
다양한 응용 프로그램에 매우 유용한 낮은 수준의 고도로 최적화된 데이터 구조입니다. Python 프로그래머로서 deque는 무기고에 갖고 싶은 도구 중 하나입니다.
Deques에 대한 자세한 내용과 Python 코드 에서 Deques를 구현하는 방법을 알아보려면 계속 읽으세요 !
목차
데크란?
Python이나 일반적으로 컴퓨터 프로그래밍을 처음 접하는 경우 deque가 무엇인지 궁금할 수 있습니다. Deque는 " double-ended queue "의 약자로 queue의 양쪽 끝에서 요소를 추가하고 제거할 수 있는 데이터 구조입니다.
일반 대기열과 유사하지만 대기열의 앞뒤 모두에서 요소를 추가하고 제거할 수 있는 유연성이 추가되었습니다. 이것은 파이썬의 deque가 이중 연결 리스트로 구현되어 있기 때문에 가능합니다.
Python에서 deque는 deque 클래스를 제공하는 collections 모듈을 사용하여 구현됩니다. 이 클래스는 양단 큐에서 요소를 추가하고 제거하기 위한 여러 메서드를 제공합니다.
또한 deque를 회전시키거나 완전히 지우는 것과 같은 다른 유용한 작업을 위한 기능도 제공합니다.
Python Deque의 기능
추가 및 팝 작업에 O(n) 시간 복잡도가 있는 일반 목록과 달리 deque는 O(1) 시간 복잡도를 제공합니다. 따라서 이러한 읽기 및 쓰기 작업에 대해 훨씬 더 빠르고 메모리 효율적입니다.
다음은 알아야 할 몇 가지 Python deque 기능입니다.
가변 데이터 구조입니다.
정수, 튜플, 배열 등과 같은 여러 데이터 유형을 저장할 수 있습니다.
인덱싱은 지원하지만 슬라이싱 작업은 지원하지 않습니다.
내부 정렬을 지원하지 않습니다.
in , sorted() , len() , reverse() 등과 같은 일반적인 내장 반복 가능 함수 및 작업을 지원합니다.
Deque의 응용
데크는 여러 가지 이유로 유용합니다. 예를 들어 컴퓨터 과학에서 공통적인 데이터 구조인 큐 또는 스택을 구현하는 데 사용할 수 있습니다.
또한 스트리밍 애플리케이션 또는 데이터에 대한 빠른 액세스가 필요한 시스템과 같이 실시간으로 데이터를 효율적으로 처리하는 데 사용할 수 있습니다.
대기열 및 스택에 사용되는 것 외에도 deque는 너비 우선 검색 알고리즘을 구현하는 데에도 사용할 수 있습니다. 또한 더 큰 순서로 항목의 슬라이딩 창을 유지하는 데 유용합니다.
Deque 생성 및 초기화 방법
collections 모듈의 내장 함수를 사용하여 deque를 만들 수 있습니다. 이 데이터 구조를 만들고 채우는 방법을 자세히 살펴보겠습니다.
deque() 함수 사용
Python에서 deque를 생성하려면 collections 모듈의 내장 deque() 함수를 사용할 수 있습니다. 이 함수는 양방향 대기열을 구현하는 데 사용할 수 있는 비어 있는 새 deque 개체를 반환합니다.
다음은 빈 deque 객체를 만드는 방법의 예입니다.
from collections import deque
my_deque = deque()
deque() 함수에 iterable(목록, 튜플 등)을 전달하여 초기 요소로 deque를 만들 수도 있습니다 . deque는 왼쪽에서 오른쪽으로 iterable의 요소로 초기화됩니다.
다음은 예입니다.
from collections import deque
my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)
요소로 Deque 초기화
다양한 메서드를 사용하여 요소가 있는 빈 양단 큐를 초기화할 수도 있습니다. 이를 수행하는 한 가지 방법은 append() 및 appendleft() 메서드를 사용하여 deque의 오른쪽과 왼쪽에서 각각 요소를 추가하는 것입니다.
다음은 예입니다.
from collections import deque
#Initialize the empty deque
my_deque = deque()
print(my_deque)
#Add Values to the deque
my_deque.append(1)
my_deque.append(2)
my_deque.appendleft(3)
print(my_deque)
이 코드를 실행한 후 deque에는 [3, 1, 2] 요소가 포함됩니다.
요소로 deque를 초기화하는 또 다른 방법은 deque() 함수 에 요소 목록을 전달하는 것입니다 .
다음은 예입니다.
from collections import deque
my_deque = deque([1, 2, 3])
이 코드를 실행하면 [1, 2, 3] 요소를 포함하는 deque 객체가 생성됩니다 .
전반적으로 Python에서 deque를 만들고 초기화하는 것은 간단하며 내장 deque() 함수를 사용하여 수행할 수 있습니다. append() 및 appendleft() 메서드를 사용하여 빈 deque에 요소를 추가하여 이 작업을 수행할 수도 있습니다 .
일반적인 Deque 작업을 수행하는 방법
Python에서 deque 개체에 대해 수행할 수 있는 많은 작업이 있습니다. 더 인기있는 몇 가지를 확인해 봅시다.
Deque에 요소 추가
append() 및 appendleft() 메서드를 사용하여 Python deque 에 요소를 추가할 수 있습니다 . append () 메서드는 deque의 오른쪽 끝에 요소를 추가하고 appendleft() 메서드는 deque의 왼쪽 끝에 요소를 추가합니다.
예를 들면 다음과 같습니다.
import collections
# Create an empty deque
my_deque = collections.deque()
# Add elements to the deque
my_deque.append(1)
my_deque.appendleft(2)
my_deque.append(3)
print(my_deque)
# Output:
deque([2, 1, 3])
Deque에 여러 데이터 요소 추가
deque에 데이터 요소를 하나씩 추가하지 않으려면 extend() 또는 extendleft() 함수를 사용하여 프로세스 속도를 높일 수 있습니다. 이 함수는 이터러블을 받아 이터러블의 내용을 deque의 끝이나 왼쪽 끝에 각각 추가합니다.
예를 들면 다음과 같습니다.
from collections import deque
my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)
#Creating a tuple and list
cont = (11, 12, 13, 14)
full = [10,20,30]
#Extending the deque from the right
my_deque.extend(cont)
print(my_deque)
#Extending the deque from the left
my_deque.extendleft(full)
print(my_deque)
위의 코드에서 extend() 함수는 deque의 끝에 cont 튜플 의 여러 값을 추가합니다 . 다음으로 extendleft() 함수는 전체 목록의 여러 데이터 요소를 deque의 왼쪽 끝에 추가합니다.
Deque에서 요소 제거
pop() 및 popleft() 메서드를 사용하여 Python deque에서 요소를 제거할 수 있습니다 . pop () 메서드는 deque의 가장 오른쪽 요소를 제거하고 반환하는 반면 popleft() 메서드는 deque의 가장 왼쪽 요소를 제거하고 반환합니다.
예를 들면 다음과 같습니다.
import collections
#Create a deque with some elements
my_deque = collections.deque([1, 2, 3, 4, 5])
#Remove elements from the deque
my_deque.pop()
my_deque.popleft()
print(my_deque)
# Output: deque([2, 3, 4])
remove() 함수를 사용하여 deque에서 특정 값을 제거할 수도 있습니다 . 이 함수는 deque에서 지정된 값의 첫 번째 항목을 제거합니다.
예를 들면 다음과 같습니다.
import collections
#Create a deque with some elements
my_deque = collections.deque([1, 2, 1, 4, 5])
#Remove elements from the deque
my_deque.remove(1)
print(my_deque)
# Output: deque([2, 1, 4, 5])
요소를 찾을 수 없으면 Python은 ValueError 를 반환 합니다 .
Deque에서 모든 요소 제거
Deque에서 모든 요소를 제거하고 빈 상태로 되돌리려면 clear() 함수를 사용할 수 있습니다. 작동 방식은 다음과 같습니다.
from collections import deque
#Create a deque with some elements
my_deque = deque([1, 2, 1, 4, 5])
#Remove all elements from the deque
my_deque.clear()
print(my_deque)
# Output:
deque([])
Accessing Elements of a Deque
You can access elements of a Python deque using the indexing operator []. You can also use a negative value in the indexing operator to access the deque elements from the right.
The indexing starts from 0 for the leftmost element and -1 for the rightmost element. Here’s an example:
import collections
# Create a deque with some elements
my_deque = collections.deque([1, 2, 3, 4, 5])
# Access elements of the deque
print(my_deque[0])
# Output: 1
print(my_deque[-1])
# Output: 5
Modifying Elements of a Deque
You can modify elements of a Python deque using the indexing operator “[]” and the assignment operator “=“. Here’s an example:
from collections import deque
# Create a deque with some elements
my_deque = deque([1, 2, 3, 4, 5])
print(my_deque)
# Modify elements of the deque
my_deque[0] = 10
my_deque[-1] = 50
print(my_deque)
In the above code, the indexing operator changes the first and last elements of the deque to 10 and 50 respectively.
These are the basic operations you can perform on a deque object in Python. With these operations, you can efficiently implement various data structures such as queues, stacks, and more.
How to Work with a Deque as a Queue
You can use a deque in Python to implement a queue data structure. A queue is an abstract data type that operates on a first in first out (FIFO) basis.
What this means is that you can append new items from one end of the queue and push out old items from the other end.
A good way to explain this is a line at a store. Typically, the first person to arrive will be at the head of the line and will be attended to first.
New arrivals will have to head to the back of the line and wait their turn. So, the first in will be the first answered, while the last in will be the last attended to.
Here’s how you can use a deque to implement queues.
Using append() and popleft() Methods
deque를 대기열로 사용하려면 append() 메서드를 사용하여 deque의 오른쪽 끝에 요소를 추가할 수 있습니다. 또한 popleft() 메서드를 사용하여 deque의 왼쪽 끝에서 요소를 제거할 수 있습니다.
이것은 Python에서 대기열을 구현하는 매우 효율적인 방법입니다. 다음은 예입니다.
from collections import deque
queue = deque()
queue.append(1)
queue.append(2)
queue.append(3)
print(queue)
# Output: deque([1, 2, 3])
x = queue.popleft()
print(x)
# Output: 1
print(queue)
# Output: deque([2, 3])
보시다시피, append() 메서드는 deque의 오른쪽 끝에 요소를 추가하고 popleft() 메서드는 deque의 왼쪽 끝에 요소를 제거합니다.
이것이 바로 대기열 구현에 필요한 것입니다.
Deque Queue가 비어 있는지 확인
deque가 비어 있는지 확인하려면 not 연산자를 사용할 수 있습니다. 다음은 예입니다.
from collections import deque
queue = deque()
if not queue:
print("Queue is empty")
else:
print("Queue is not empty")
deque가 비어 있기 때문에 " Queue is empty " 가 출력됩니다 . deque에 요소를 추가하면 더 이상 비어 있지 않습니다.
결론적으로 Python에서 deque를 큐로 사용하는 것은 매우 효율적이고 구현하기 쉽습니다.
Deque를 스택으로 사용하기
대기열과 마찬가지로 스택은 데이터 구성에 사용할 수 있는 추상 데이터 유형의 또 다른 예입니다. 대기열과 달리 스택은 후입선출(LIFO) 방식으로 작동합니다.
즉, deque의 마지막 요소가 첫 번째 요소가 됩니다. 기본 데이터 구조를 사용하여 이를 구현하는 방법은 다음과 같습니다.
append() 및 pop() 메서드 사용
Deque를 스택으로 사용할 때 append() 메서드를 사용하여 스택의 맨 위에 요소를 추가할 수 있습니다. 이 메서드는 deque의 오른쪽 끝에 요소를 추가합니다.
마찬가지로 pop() 메서드를 사용하여 스택 맨 위에서 요소를 제거할 수 있습니다 . 이 메서드는 deque의 가장 오른쪽 요소를 제거하고 반환합니다.
예를 들어 " my_stack " 이라는 deque가 있고 스택의 맨 위에 요소를 추가하려고 한다고 가정해 보겠습니다. 다음 코드를 사용할 수 있습니다.
my_stack.append(5)
이렇게 하면 스택 맨 위에 요소 5가 추가됩니다.
스택에서 맨 위 요소를 제거하려면 pop() 메서드를 사용할 수 있습니다: `
bal = my_stack.pop()
print(bal)
# Output: 5
이렇게 하면 deque의 가장 오른쪽 요소(이 경우 5)가 제거되고 반환됩니다.
빈 Deque 개체 확인
부울 연산자 " not " 을 사용하여 deque 스택이 비어 있는지 확인할 수 있습니다 . deque가 비어 있으면 " not my_deque "는 True를 반환합니다 . 그렇지 않으면 False 를 반환합니다 .
예를 들어 " my_deque " 라는 deque 스택이 있고 비어 있는지 확인하려고 한다고 가정해 보겠습니다. 다음 코드를 사용할 수 있습니다.
if not my_deque:
print("The deque is empty")
else:
print("The deque is not empty")
deque가 비어 있으면 " The deque is empty " 가 인쇄됩니다 . 비어 있지 않으면 " The deque is not empty "가 출력됩니다.
Deque를 스택으로 사용하는 경우 스택이 비어 있는지 여부를 추적하는 것이 중요합니다. 빈 스택에서 요소를 꺼내려고 하면 IndexError 가 발생 합니다 .
제한된 Deque는 무엇입니까?
제한된 deque는 deque의 양쪽 끝에서 데이터 추가 및 팝 작업에 일부 제한이 있는 양방향 대기열입니다. 제한된 데크에는 두 가지 주요 유형이 있습니다. 입력 제한 deque 및 출력 제한 deque
그것들을 살펴봅시다:
입력 제한 Deque
입력 제한 deque를 사용하면 deque의 양쪽 끝에서 데이터 요소를 팝하거나 삭제할 수 있습니다. 그러나 deque의 한쪽 끝에서만 데이터 요소를 삽입할 수 있습니다.
이는 메모리 제약이 있는 애플리케이션에서 매우 유용합니다. 이를 사용하여 deque의 끝에서 데이터를 삭제하는 기능을 유지하면서 연대순으로 데이터 요소를 추가할 수 있습니다.
출력 제한 데크
출력 제한 deque를 사용하면 deque의 양쪽 끝에서 데이터를 삽입할 수 있습니다. 그러나 프런트 엔드라고 하는 deque의 한쪽 끝에서만 항목을 삭제할 수 있습니다.
출력 제한 deque는 FIFO 데이터 구조를 구현해야 하지만 여전히 양쪽 끝에서 데이터를 추가하는 기능을 원하는 경우에 매우 유용합니다.
마무리하자
지금쯤이면 Python의 deque 모듈과 이를 사용하여 효율적인 대기열과 스택을 구현하는 방법에 대해 잘 이해하셨을 것입니다.
Deques는 기존 목록에 비해 많은 이점을 제공하는 다목적 데이터 구조입니다. 이러한 이점은 메모리 효율적인 추가 및 팝 작업과 관련하여 명백합니다.
스택 또는 양방향 대기열을 구현해야 하는 경우에도 훌륭한 선택입니다. 데크 사용의 주요 이점은 다음과 같습니다.
deque의 양쪽 끝에서 효율적인 O(1) 추가 및 팝 작업
deque의 첫 번째 요소와 마지막 요소에 대한 빠른 O(1) 액세스
스레드로부터 안전한 원자적 작업에 대한 기본 제공 지원
deque에서 요소를 삽입, 제거 및 회전하는 유연한 방법
전반적으로 deque 모듈은 보다 효율적이고 유지 관리 가능한 Python 코드를 작성하는 데 도움이 되는 강력한 도구입니다. 작은 스크립트에서 작업하든 대규모 프로젝트에서 작업하든 데크는 확실히 기존 목록이나 다른 데이터 구조의 대안으로 고려할 가치가 있습니다!
Python에 대해 자세히 알아볼 준비가 되었습니다. 아래 재생 목록을 확인하세요.
SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.
컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.
Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!
Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.
조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.
PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.
타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.
Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.
PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.
이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.