作者icbruce (justlikethis)
看板Python
标题[问题] 多重变数Multiple Assignment Statement
时间Wed Sep 28 09:47:08 2016
最近在用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 有顺序吗?自己认为他是把右方先都存在暂时变数,
再存到左边,如果是这样顺序怎麽变都应该没关系. 但显然不是.
另外请问前辈你们推荐这种写法吗?还是说分开一行一行的比较好
先谢谢回答
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 110.174.49.248
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1475027232.A.4E7.html
1F:→ icbruce: 明白了,右边没有顺序,但左边会先处理第一个再接下去 09/28 09:58
2F:→ icbruce: 所以head.next 要先取代,再来才是head. 反之则会error 09/28 09:59
3F:推 Typebrook: 长知识了,不过为什麽不用slice?(list[::-1]) 09/28 12:54
4F:推 eight0: 那如果在右边加括弧呢?感觉会先建成一个 tuple 再拆开 09/29 06:08
5F:→ icbruce: 回Type: head是ListNode 不是list, 但我也没发现还有这招 09/29 19:18
6F:推 Typebrook: 谢谢指教,我还是coding新手没有linked list的概念, 09/30 12:56
7F:→ Typebrook: 补充了一下背景知识,的确应该和__getitem__没什麽关联 09/30 12:58
8F:→ icbruce: 回eight, 加括弧和不加是一样的结果,我猜他都会先建 09/30 21:42
9F:→ icbruce: tuple 再分配的. 09/30 21:42