首先,我来自C / C ++ / Java的背景。我决定学习Python以扩展我的技能,并希望深入研究一些Web开发。我只学习了大约两天,我一直在尝试创建一些简单的数据结构。
我收到了很多错误,我无法弄清楚该做什么!我试图研究它,我仍然无法弄明白。我收到传递给我的LinkedList成员函数的位置参数数量的错误,当我拿出它们时,它说我的Node函数定义中没有定义self。
class Node:
def __init__():
self.data = None
self.nextNode = None
def set_and_return_Next():
self.nextNode = Node()
return self.nextNode
def getNext():
return self.nextNode
def getData():
return self.data
def setData(d):
self.data = d
class LinkedList:
def buildList(array):
head = Node()
head.setData(array[0])
temp = head
for i in array:
temp = temp.set_and_return_Next()
temp.setData(array[i])
tail = temp
return self.head
def printList():
tempNode = head
while(tempNode!=tail):
print(tempNode.getData())
tempNode = tempNode.getNext()
myArray = [3, 5, 4, 6, 2, 6, 7, 8, 9, 10, 21]
myList = LinkedList()
myList.buildList(myArray)
myList.printList()
我知道他们可能是愚蠢的错误,但请帮助。
答案 0 :(得分:5)
在Python中(与C ++不同),每个实例方法都有一个隐含的第一个参数:类的实例。根据惯例,它被称为self
:
def some_method(self, arg1, ...):
此外,在Python中,您几乎可以在任何地方使用列表代替数组。您所谓的myArray
实际上是一个列表。迭代列表和其他迭代迭代元素,而不是索引:
for element in your_list:
do_something(element)
答案 1 :(得分:1)
修正了它!这是新代码:
#Matthew's Simple Python # Practice Linked List class Node: def __init__(self): self.data = None self.nextNode = None def set_and_return_Next(self): self.nextNode = Node() return self.nextNode def getNext(self): return self.nextNode def getData(self): return self.data def setData(self, d): self.data = d class LinkedList: def buildList(self, array): self.head = Node() self.head.setData(array[0]) self.temp = self.head for i in array[1:]: self.temp = self.temp.set_and_return_Next() self.temp.setData(i) self.tail = self.temp return self.head def printList(self): tempNode = self.head while(tempNode!=self.tail): print(tempNode.getData()) tempNode = tempNode.getNext() print(self.tail.getData()) myArray = [3, 5, 4, 6, 2, 6, 7, 8, 9, 10, 21] myList = LinkedList() myList.buildList(myArray) myList.printList()
这是输出:
>>>
3
5
4
6
2
6
7
8
9
10
21