首页 > 解决方案 > 调用内部类方法时分配不起作用

问题描述

我有一些代码来反转一个 LinkedList,其中我从值 a = [1,2,3,4,5] 开始,当我进行赋值时 c = a.reverse() c 是“无”而 a 是 [5, 4、3、2、1]。为什么调用类方法时赋值不起作用?

    class Node:
        def __init__(self, value):
            self.value = value
            self.next = None

    class LinkedList:
        def __init__(self):
            self.head = None
    def append(self, value):
        if self.head is None:
            self.head = Node(value)
            return

        node = self.head
        while node.next:
            node = node.next

        node.next = Node(value)

    def reverse(self):
        if self.head is None:
            return
        curr = self.head
        prev = None
        while curr:
            next = curr.next
            curr.next = prev
            prev = curr
            curr = next
        self.head = prev
        print self.head.value
        print self.head.next.value
        print self.head.next.next.value
    def __iter__(self):
        node = self.head
        while node:
            yield node.value
            node = node.next

    def __repr__(self):
        return str([v for v in self])

def reverse(linked_list):
    new_list = LinkedList()
    if linked_list is None:
        return new_list
    node = linked_list.head
    new_list.head = node
    while node:
        old_head = new_list.head
        curr = node
        node = node.next
        new_list.head = curr
        new_list.head.next = old_head

    return new_list

    if __name__ == "__main__":
        a = LinkedList()
        b = [1,2,3,4,5]
        for item in b:
            a.append(item)
        print(a)
        c = a.reverse()
        print(a)
        print(c)

标签: pythonpython-3.x

解决方案


推荐阅读