【发布时间】:2022-07-08 02:35:38
【问题描述】:
我有一堂课如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
我创建一个链表为:
ll = ListNode(1)
ll.next = ListNode(2)
我想通过在函数中创建新节点来将列表复制到新列表:
def create_new_node(res, l):
print(l.val)
res.next = ListNode(l.val)
l=l.next
print("Next", l.val)
res=res.next
res = ListNode()
while ll:
# Based on some condition
create_new_node(res, ll)
>>> 1
Next 2
1
Next 2
....
但是,这进入了一个无限循环,因为 ll 永远不会前进到 create_node_function 之外的 while 循环中的下一个节点,即使正在生成 l(这是 ll 的引用)以l=l.next 指向next 节点。
在Python中类不是通过引用传递的,难道不能在另一个函数中修改它们以反映调用函数的变化吗?
【问题讨论】:
-
虽然类实例是一个引用,但引用本身并不是通过引用传递的。另外,我注意到您使用“next”作为变量,但这也是 python 内置函数的名称。我得先走了,但如果没有人比我做得好,我会在大约一个小时后通过一个例子把它说得更清楚。
标签: python function class reference