考虑出队= [2、3、4,无,无,无,1]。它是圆形的,并假设1是出队的前端,4是出队的后端,敲木头,我们应该将这些索引存储在变量front和back下,它们的值分别为6和2。
如何打印索引前后的值,即[1、2、3、4]。更好的是,更具体地说,我希望找到一种方法来制作更具体的[1,2,3,4]字符串。我的代码如下,但是我不认为这是省时的,而且,在我的大部分代码中,我不确定此方法是否有效。
def str(self):
if self.size==0: #my first thoughts are to simply catch an empty dequeue
return "[ ]"
elif self.size==1: #same for a dequeue of only one object.
string = "[ "+str(self.__contents[0])+" ]"
return string
else:
string="[ "
index=self.front
while (index%self.capacity) != self.back:
string = string + str(self.contents[index]) + ", "
index+=1
string=string+str(self.__contents[self.back]) + " ]"
return string
其中self.size =非空条目的数量,self.capacity =数组中单元的总数,self.contents代表数组的内容,self.front和self.back代表索引的索引。出队的前后。
答案 0 :(得分:2)
您要使用内置的deque
吗?如果是这样,它就支持标准迭代,从而使列表理解非常具有Pythonic:
'[{}]'.format(', '.join(x for x in my_deque if x is not None)
如果它不是内置的deque
,为什么不为您的类型添加迭代支持以允许上述方法(可能还有许多其他方法)。