python - 反向列表和添加问题
问题描述
我正在尝试创建一个队列,我的第一个问题是我的输出以相反的顺序打印“内容”部分(即“内容: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()
解决方案
使用以下代码:
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)
推荐阅读
- pine-script - SMA跨界策略协助
- sql-server - SQL Server Masking 不起作用 - 对 Temp DB 有效
- tensorflow - 使用 Tensorflow 进行井字游戏 AI
- marklogic - Gradle mlReloadModules 未加载 REST 扩展
- c# - 对象初始化器语法 C#
- angular - 如何使用角度 jwt 来拦截具有离子存储的令牌?
- java - 尝试解析字符串时获取 NumberFormat
- android - 单击文本框时,物理设备上的软键盘不显示
- eclipse - Eclipse Birt Report 上两个日期之间的天数计算
- java - 有没有办法将 Room 数据库与 MySql 工作台连接起来?