python - 调用内部类方法时分配不起作用
问题描述
我有一些代码来反转一个 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)
解决方案
推荐阅读
- java - Spring Boot 使用 ClientDetailsUserDetailsService 加载 ClientDetails
- angular - 如何将 Ionic 框架与自定义 webpack 配置集成到现有的 Angular 应用程序中?
- laravel - 如果用户使用 Laravel 不活跃,则抛出错误消息
- batch-file - 如何使用批处理文件将变量作为剪贴板发送
- javascript - Firebase 实时数据库 - 如何构建初始负载和侦听器
- angular - 如何在角度7中过滤数组的数组
- jenkins - 从 Jenkins 执行 denodo 任务
- matplotlib - 线性回归图解释
- python - 如何根据用户输入的日期获取第二天的日期?
- python-3.x - 一张图比较四张图