Python中的循环数组类
我正在做一个项目,想创建一个循环数组的类,使用的编程语言是Python。我对Python中的类还不太熟悉,不过我看了一些网页和书籍的章节,觉得自己对它们的工作原理有了一些了解。但是我还是需要帮助,所以我决定来这里请教大家 :)
我们的类需要实现几个操作:在前面插入、在后面插入、在指定位置插入、从前面移除、从后面移除、从指定位置移除。
我已经开始写代码了,但遇到了一些问题,而且我不太确定我的语法是否正确。
这是我目前写的代码:
class circular:
def __init__(self):
self.store = []
self.capacity = len(self.store)
self.size = 0
self.startIndex = 0
self.endIndex = 0
def decrementIndex(self):
index = index - 1
if index < 0:
self.store = self.store + self.capacity
def incrementIndex(self):
index = index + 1
if index == self.capacity:
index = index - self.capacity
def addToBack(self, value):
self.store[self.endIndex] = value
self.endIndex = incrementIndex(self.endIndex)
self.size += 1
def addToFront(self, value):
if self.size == 0:
addToBack(self, value)
else:
self.startIndex = decrementIndex(self.startIndex)
self.store[self.startIndex] = value
self.size += 1
我在这里停下来了,想先测试一些函数,主要是addToFront和addToBack。在IDLE中测试时,我用c = circular()和c.addToBack(2)时出现了索引错误……我也不太明白为什么。这不是唯一的问题,只是我卡住的地方,需要帮助才能继续。
我在这里发帖是因为我需要帮助,想要学习,而不是因为我懒惰,没有尝试去研究我的问题。谢谢大家!
1 个回答
1
在 __init__
里你设置了
self.store = []
在 addToBack
里你做了
self.store[self.endIndex] = value
如果这是对循环数组的第一次操作,并且你传入 2
作为 value
,那么这就变成了
[][0] = 2
问题应该很明显——一个空列表没有索引 0
,它根本没有任何索引。
你需要用不同的方式把这个项目添加到列表中。
我不会告诉你具体怎么做,因为这是你作业的一部分,需要你自己去想办法。