这是我的程序
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]
答案 0 :(得分:1)
您可以创建副本,反转并连接。
myList = [1, 2, 3]
print(myList) # [1, 2, 3]
listToReverse = myList.copy()
listToReverse.reverse()
myList += listToReverse
print(myList) # [1, 2, 3, 3, 2, 1]
答案 1 :(得分:1)
你正在从前面移除东西,添加到后面以及列表中的长度:这只是旋转的东西,导致相同的序列。
您可以对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])