элементы очереди отображаются в их первоначальном порядке, за которым следует копия элементов очереди в обратном порядке. - PullRequest
0 голосов
/ 26 апреля 2018

это моя программа

def mirror_queue(orig_queue):
    #backup_s = my_stack_module.Stack()
    length = len(orig_queue.items)
    counter = length
    while counter > 0 :
        item1 = orig_queue.dequeue()
        item2 = orig_queue.enqueue(item1)
        counter -=1

с учетом вывода следует [1,2,3] работает для всех длин, даже для пустого списка.но я хочу и его обратную версию ... например [1,2,3,3,2,1] я пытался использовать .reverse (), но только в обратном порядке очереди [3,2,1]

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы удаляете вещи с фронта, добавляете к задней части и тому, что для длины списка: это просто вращает вещи вокруг, приводя к той же последовательности.

Вы можете сделать то же самое с d.rotate(len(d)) - но результирующий список будет в том же порядке, что и раньше: [1,2,3]-->[2,3,1]-->[3,1,2]-->[1,2,3].

Использовать

from collections import deque

def mirrDeque(d):
    c = deque(d)     #                     [1,2,3]
    c.reverse()      # reverse the copy    [3,2,1]
    c.extend(d)      # add the original    [3,2,1,1,2,3]
    c.rotate(len(d)) # rotate by len       [1,2,3,3,2,1]
    return c

k = deque([1,2,3,4])
print(mirrDeque(k))

Вывод:

deque([1, 2, 3, 4, 4, 3, 2, 1])
0 голосов
/ 26 апреля 2018

Вы можете создать копию, перевернуть ее и объединить.

myList = [1, 2, 3]
print(myList)  # [1, 2, 3]
listToReverse = myList.copy()
listToReverse.reverse()
myList += listToReverse
print(myList) # [1, 2, 3, 3, 2, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...