首页 > 解决方案 > 反向列表和添加问题

问题描述

我正在尝试创建一个队列,我的第一个问题是我的输出以相反的顺序打印“内容”部分(即“内容:5、4、3、2、1”而不是 1、2、3、4 , 5)

我在主要部分后面的部分也有问题,我有数字 += 15,队列应该是 10-15,但我不知道该怎么做

 class Queue:
     def __init__(self, items):
         self.items = []

     def is_empty(self):
         return self.items == []

     def enqueue(self, item):
         self.items.insert(0, item)

     def __repr__(self):
    return "Contents: {}".format(str(self.items).strip("[]"))

     def dequeue(self):
         return self.items.pop()

     def size(self):
         return len(self.items)

 # -----------------------------------------------------

 def main():
     numbers = Queue("Numbers")

     print("Enqueue 1, 2, 3, 4, 5")
     print("---------------------")
     for number in range(1, 6):
         numbers.enqueue(number)
         print(numbers)

     print("\nDequeue one item")
     print("----------------")
     numbers.dequeue()
     print(numbers)

     print("\nDeque all items")
     print("---------------")
     while not numbers.is_empty():
         print("Item dequeued:", numbers.dequeue())
         print(numbers)

     # Enqueue 10, 11, 12, 13, 14
     for number in range(10, 15):
         numbers.enqueue(number)

     # Enqueue 15
     numbers += 15

     print("\n10, 11, 12, 13, 14, 15 enqueued")
     print("-------------------------------")
     print(numbers)

 # -----------------------------------------------------

 main()

标签: pythonlistqueue

解决方案


使用以下代码:

print("Enqueue 1, 2, 3, 4, 5")
print("---------------------")
for number in range(1, 6):
    numbers.enqueue(number)

您正在将数字 1、2、3、4 和 5 添加到数据结构中。由于 的实现enqueue,每个数字都被添加到列表的开头(索引零):

def enqueue(self, item):
    self.items.insert(0, item)

即,在插入 1、2、3、4 和 5 之后,您有一个包含[5, 4, 3, 2, 1].

如果您希望将每个数字添加到 的末尾items,则应将方法更改为:

def enqueue(self, item):
    self.items.append(item)

这将使它改为打印:

Enqueue 1, 2, 3, 4, 5                                                                 
---------------------                                                                 
Contents: 1                                                                           
Contents: 1, 2                                                                        
Contents: 1, 2, 3                                                                     
Contents: 1, 2, 3, 4                                                                  
Contents: 1, 2, 3, 4, 5                                                               

15此外,对数据结构进行排队。改变:

    # Enqueue 15
    numbers += 15

至:

    # Enqueue 15
    numbers.enqueue(15)

推荐阅读