[问题] 多重变量Multiple Assignment Statement

楼主: icbruce (justlikethis)   2016-09-28 09:47:08
最近在用python 练leetcode
其中一题是做reverseList
参考讨论区 答案如下:
Q:Reverse a singly linked list.
def reverseList(self, head):
rev = None
while head:
head.next,rev,head = rev,head,head.next
return rev
第四行,如果改成如下就会 Error 'NoneType' object has no attribute 'next'
head,rev,head.next = head.next,head,rev
请问multiple assignment 有顺序吗?自己认为他是把右方先都存在暂时变量,
再存到左边,如果是这样顺序怎么变都应该没关系. 但显然不是.
另外请问前辈你们推荐这种写法吗?还是说分开一行一行的比较好
先谢谢回答
楼主: icbruce (justlikethis)   2016-09-28 09:58:00
明白了,右边没有顺序,但左边会先处理第一个再接下去所以head.next 要先取代,再来才是head. 反之则会error
作者: Typebrook (Pham)   2016-09-28 12:54:00
长知识了,不过为什么不用slice?(list[::-1])
作者: eight0 (欸XD)   2016-09-29 06:08:00
那如果在右边加括号呢?感觉会先建成一个 tuple 再拆开
楼主: icbruce (justlikethis)   2016-09-29 19:18:00
回Type: head是ListNode 不是list, 但我也没发现还有这招
作者: Typebrook (Pham)   2016-09-30 12:56:00
谢谢指教,我还是coding新手没有linked list的概念,补充了一下背景知识,的确应该和__getitem__没什么关联
楼主: icbruce (justlikethis)   2016-09-30 21:42:00
回eight, 加括号和不加是一样的结果,我猜他都会先建tuple 再分配的.

Links booklink

Contact Us: admin [ a t ] ucptt.com