Python 打印双端队列

Sea*_*ean 1 python arrays queue tostring deque

我有一个完整的 Deque Array 类,如下所示:

from collections import deque
import ctypes

class dequeArray:

DEFAULT_CAPACITY = 10  #moderate capacity for all new queues

def __init__(self):
    self.capacity = 5
    capacity = self.capacity
    self._data = self._make_array(self.capacity)
    self._size = 0
    self._front = 0

def __len__(self):
    return self._size

def __getitem__(self, k):   #Return element at index k
    if not 0 <= k < self._size:
        raise IndexError('invalid index')
    return self._data[k]

def isEmpty(self):
    if self._data == 0:
        return False
    else:
        return True

def append(self, item):  #add an element to the back of the queue
    if self._size == self.capacity:
        self._data.pop(0)
    else:
        avail = (self._front + self._size) % len(self._data)
        self._data[avail] = item
        self._size += 1

#def _resize(self, c):
    #B = self._make_array(c)
    #for k in range(self._size):
        #B[k] = self._A[k]
    #self._data = B
    #self.capacity = capacity

def _make_array(self, c):
    capacity = self.capacity
    return (capacity * ctypes.py_object)()

def removeFirst(self):
    if self._size == self.capacity:
        self._data.pop(0)
    else:
        answer = self._data[self._front]
        self._data[self._front] = None
        self._front = (self._front + 1) % len(self._data)
        self._size -= 1
        print(answer)


def removeLast(self):
    return self._data.popleft()

def __str__(self):
    return str(self._data)
Run Code Online (Sandbox Code Playgroud)

当我尝试在主文件中打印双端队列时,它会打印出类似这样的内容,

<bound method dequeArray.__str__ of <__main__.dequeArray object at   0x1053aec88>>
Run Code Online (Sandbox Code Playgroud)

当它应该打印整个数组时。我想我需要使用str函数,我尝试添加

def __str__(self):
    return str(self._data)
Run Code Online (Sandbox Code Playgroud)

这未能给我输出。我也尝试过

def __str__(self):
    return str(d)
Run Code Online (Sandbox Code Playgroud)

d 是双端队列数组,但我仍然没有取得任何成功。我怎样才能正确打印?

小智 5

您应该对数组中每个不为 NULL 的元素调用 str 函数,可以使用以下 str 函数来完成:

def __str__(self):
    contents = ", ".join(map(str, self._data[:self._size]))
    return "dequeArray[{}]".format(contents)
Run Code Online (Sandbox Code Playgroud)