# class defined here.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
# A function here.
def list_init(lst):
if not lst:
return None
root = ListNode(lst[0])
temp = root
for i in range(1, len(lst)):
temp.next = ListNode(lst[i]) #
temp = temp.next # these two lines I want to simplify
return root
当我将这两行简化为
时temp = temp.next = ListNode(lst[i])
出错了,root.next为None。
这两种赋值表达方式有什么区别?
我认为它们是相同的,但结果并不相同。
但是,我将声明更改为
temp.next = temp = ListNode(lst[i])
结果是正确的,困惑的。
答案 0 :(得分:1)
赋值语句将所有名称绑定到RHS上的同一对象。如果要正确处理多个对象,请使用元组解包。
temp, temp.next = temp.next, ListNode(lst[i])