Печать непустой части круглого блеска

1

Рассмотрим dequeue = [2, 3, 4, None, None, None, 1]. Он является круглым и предполагает, что 1 является фронтом dequeue, а 4 - задней частью dequeue, стучите по дереву, мы должны иметь эти индексы, хранящиеся под переменными спереди и сзади, их значения равны 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, представляющие индексы переднего и заднего от dequeue.

Теги:
list
deque
circular-list
arraydeque

1 ответ

2

Вы хотите использовать встроенный deque? Если это так, он поддерживает стандартную итерацию, делая понимание списка довольно pythonic:

'[{}]'.format(', '.join(x for x in my_deque if x is not None)

Если это не встроенный deque, почему бы не добавить поддержку итерации к вашему типу, чтобы разрешить вышеупомянутый метод (и, вероятно, многие другие методы).

  • 0
    Как правило, я не люблю использовать встроенные функции. Хотя это очень помогает, я чувствую, что это обманывает некоторые цели проекта, из которого я должен учиться. В любом случае, спасибо за ответ. Я действительно решил мою проблему сегодня утром, в будущем я надеюсь использовать встроенный deque tho!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню