【发布时间】:2023-03-19 23:42:01
【问题描述】:
我正在学习 Python 中的链表。在这个网站上,在其中一种方法中,
def add_last(self, node):
if self.head is None:
self.head = node
return
for current_node in self:
pass
current_node.next = node
for current_node in self: 这行是什么意思?一个人怎么能遍历self?遍历self是什么意思?
下面是python中链表实现的完整代码
class Node:
def __init__(self, data):
self.data = data
self.next = None
def __repr__(self):
return self.data
class LinkedList:
def __init__(self):
self.head = None
def __init__(self, nodes=None):
self.head = None
if nodes is not None:
node = Node(data=nodes.pop(0))
self.head = node
for elem in nodes:
node.next = Node(data=elem)
node = node.next
def __repr__(self):
node = self.head
nodes = []
while node is not None:
nodes.append(node.data)
node = node.next
nodes.append("None")
return " -> ".join(nodes)
【问题讨论】:
-
"for current_node in self" 不能与所示实现一起使用。 “LinkedList”必须提供正确实现的
__iter__方法才能成为可迭代并支持此“for...”。 -
@MichaelButscher 有一个 iter 方法 def __iter__(self): node = self.head while node is not None: yield node node = node.next
-
所以“整个代码”不是整个代码?
标签: python python-3.x linked-list