在python中复制或引用对象

时间:2014-05-15 06:30:31

标签: python

我在python中特别遇到了一些问题:

  

实现一种算法,删除单链表中间的节点,只允许访问该节点

解决方案是:

def deleteNode(linkedlist, node):
    if node.next != None:
        node.value = node.next.value
        node.next = node.next.next  
    else:
        node.value = None

之前我已经完成了一些Java,A = B带有对象意味着A指的是B.根据这个问题。这是否意味着在python表达式A = B A深拷贝B?

1 个答案:

答案 0 :(得分:4)

没有。 A = B在Python中的工作方式与在Java中的工作方式基本相同。 (某些高级用例存在一些差异,但这些并不重要。)

此功能实际上并不删除节点。它作弊;下一个节点的数据将被复制到此节点,并删除下一个节点。只要没有其他人依赖列表中特定节点的标识,只要有下一个节点,它就可以正常工作。 (看起来它处理没有下一个节点的情况的else实际上是错误的;它不是从列表中删除数据,而是用虚假的None值替换数据。)