python에서 창고를 실현하는 세 가지 방법

3734 단어 python창고
창고는 일종의 선형 데이터 구조로 선진적인 후출 또는 후진 선출 방식으로 데이터를 저장한다. 창고에서 데이터의 삽입 삭제 작업은 모두 창고 맨 위에서 진행된다. 흔히 볼 수 있는 창고의 함수 작업은
  • empty () C 반환 스택이 비어 있는지 여부 C Time Complexity: O (1)
  • size () C 반환 스택의 길이 C Time Complexity: O (1)
  • top () C 스택 상단 요소 보기 C Time Complexity: O (1)
  • push(g)C에서 스택 상단에 요소 추가 C Time Complexity: O(1)
  • pop()C 삭제 스택 요소 C Time Complexity: O(1)
  • python 창고는 다음과 같은 세 가지 방법으로 실현할 수 있다.
    1)list
    2)collections.deque
    3)queue.LifoQueue

    목록 실행 창고 사용하기


    python의 내장 데이터 구조list는 창고를 실현하는 데 사용되며, append () 로 창고 꼭대기에 요소를 추가하고, pop () 는 나중에 먼저 나오는 순서로 요소를 삭제할 수 있습니다.
    그러나 목록 자체에 단점이 있다. 주요 문제는 목록이 계속 확대될 때 속도 병목에 부딪히는 것이다. 목록은 동적 수조이기 때문에 새로운 요소를 추가하고 새로운 요소를 저장할 공간이 없을 때 메모리 블록을 자동으로 재분배하고 원래의 메모리 블록에 저장된 값을 복사한다. 이로 인해 일부 append () 작업은 더 많은 시간을 소모하게 된다.
    
    >>> stack = []
    >>> #append() fuction to push
    ... #element in list
    ... 
    >>> stack.append('hello')
    >>> stack.append('world')
    >>> stack.append('!')
    >>> print('Initial stack')
    Initial stack
    >>> print(stack)
    ['hello', 'world', '!']
    >>> #pop() function to pop element
    ... #from stack in LIFO order
    ... 
    >>> print('
    Element poped from stack') Element poped from stack >>> print(stack.pop()) ! >>> print(stack.pop()) world >>> print(stack.pop()) hello >>> print('
    Stack after all elements are poped') Stack after all elements are poped >>> print(stack) []

    컬렉션을 사용합니다.deque 구현 창고


    python 창고도 deque 클래스로 실현할 수 있습니다. 용기 양쪽에서 append와 팝 작업을 더욱 빠르게 진행하려면 deque가 목록보다 더 적합합니다. deque는 O(1) 시간의 append와 팝 작업을 제공할 수 있고, 목록은 O(n) 시간이 필요합니다.
    
    >>> from collections import deque
    >>> stack = deque()
    >>> # append() fuction to push
    ... #element in list
    ... 
    >>> stack.append('hello')
    >>> stack.append('world')
    >>> stack.append('!')
    >>> print('Initial stack')
    Initial stack
    >>> print(stack)
    deque(['hello', 'world', '!'])
    >>> #pop() function to pop element
    ... #from stack in LIFO order
    ... 
    >>> print('
    Element poped from stack') Element poped from stack >>> print(stack.pop()) ! >>> print(stack.pop()) world >>> print(stack.pop()) hello >>> print('
    Stack after all elements are poped') Stack after all elements are poped >>> print(stack)deque([])

    queue 모듈로 창고 구현


    Queue 모듈에는 LIFO queue, 즉 스택 구조가 있습니다. put () 와 get () 작업으로 Queue에서 데이터를 추가하고 얻습니다.
    
    >>> from queue import LifoQueue
    >>> stack = LifoQueue(maxsize = 3)
    >>> print(stack.qsize())
    0
    >>> stack.put('hello')
    >>> stack.put('world')
    >>> stack.put('!')
    >>> print('
    Element poped from stack') Element poped from stack >>> print(stack.get()) ! >>> print(stack.get()) world >>> print(stack.get()) hello >>> print('
    Empty:', stack.empty()) Empty: True
    이상은python에서 창고를 실현하는 세 가지 방법의 상세한 내용입니다. 더 많은python 창고 실현에 관한 자료는 저희 다른 관련 글에 주목하세요!

    좋은 웹페이지 즐겨찾기