[问题] 关于linked list

楼主: yulin0619 (来自中国北方的一只鹅)   2020-01-02 04:11:24
小弟在自学用python练习写linked list
还很菜 但身边没朋友 所以上来问
先附上我的程式码
https://i.imgur.com/LedXkL0.jpg
这是leetcode的题目(206-reverse linked list)
因为不熟悉python资料结构的实作方式
所以模仿了一下网络上大神的一个做法
这是一题要反转linked list的题目
最下方while循环就是在做reverse
想问一下 为什么上方图片执行后会有如下Error ?
https://i.imgur.com/wPC5afA.jpg
而如果把最下面while循环内的那一行,改成注解的那一行,
也就是说把while循环内的statement
从原本
dummy.next, head, head.next = head, head.next, dummy.next
改成
dummy.next, head.next, head = head, dummy.next, head.next
请问为什么就能正常执行呢?
https://i.imgur.com/TlO4dmh.jpg
这是编译器发现什么错误呢?
感谢众大神~
作者: b04605067 (huang bama)   2020-01-02 06:07:00
是顺序的问题吧,第一行的话 head 如果先指到最后的next就变成none了 然后你又call了 head.next 所以它会跟你说none没有next这个attribute
作者: ddavid (谎言接线生)   2020-01-02 06:27:00
原Po你以为a, b, c = c, a, b会解读成a = c b = a c = b同时做吧,不过这是错的真实情况是右边先做,先把c, a, b的值依序拿出来,然后做成一个Tuple,再把这个Tuple的值一一对应“依序”喂给abc因为会先把右边所有值都拿出来了之后才是赋值,所以不会因为连锁导致a, b, c通通变成c一开始的值也就是说赋值还是有顺序的,因此你原问题一开始那个顺序就会最后发生先head = None才打算head.next = xxx而出错

Links booklink

Contact Us: admin [ a t ] ucptt.com