是python的新手,我正在尝试模拟链表如何工作。我有以下代码:
def mystery(x):
a , b = x , x.next.next
while b.next != None:
a.next.next = b.next
b.next = a.next
a.next = b
a = b
b = b.next.next
但是当我给它列出'x',即x = ['1','2','3','4','5']时,我收到以下错误:
File "D:\workspace33\Quizes\src\tests.py", line 3, in mystery
a , b = x , x.next.next
AttributeError: 'list' object has no attribute 'next'
我试图在Online Python Tutor上模拟/推广该程序 但我一直得到同样的错误。任何人都可以让我知道我做错了什么或帮助我理解这个过程。
答案 0 :(得分:1)
如果.next
被[1]
替换,则可以使用python列表实现链接列表。以下是您的程序如此转换的示例。
def mystery(x):
a , b = x, x[1][1]
while b[1] != None:
a[1][1] = b[1]
b[1] = a[1]
a[1] = b
a = b
b = b[1][1]
return a, b
ll = [0, [1, [2, [3, None]]]]
print(mystery(ll))
# ([2, [1, [3, None]]], [3, None])
如果需要,可以在编辑器窗口中运行之前打开调试器(在Shell窗口中),在Idle中单步执行此程序。到达打印行时,单击[over]而不是[step](或禁用打印)。