Python 等式同時對多個變數的賦值說明

2021-10-12 12:53:49 字數 2837 閱讀 4300

python可以利用等式對多個變數同時賦值,如:a, b, c = 1, 2, 3。利用這個特性可以很簡潔的寫出變數交換的**:

a =

1b =

2a, b = b, a

執行上述**後 a=2,b =1。這樣就快速的完成了a,b變數之間的交換。

下面解釋**執行過程:

上述**執行到第三行,先計算等式右邊的b值,等式邊為:a, b = 2, a

然後再計算等式右邊的a值,等式邊為:a, b = 2, 1

按從左到右的順序對a, b 進行賦值計算,將a值邊為2。

按從左到右的順序對a, b 進行賦值計算,將b值邊為1。

看到這記住上述結論即可,下面的驗證過程有耐心就接著看。

驗證**如下:

defa(

):print

('a'

)return

1defb(

):print

('b'

)return

2defc(

):print

('c'

)return

3x, y, z =0,

0,0x, y, z = a(

), b(

), c(

)print

(x, y, z)

#---------------------------

#**執行結果為:

# a# b

# c# 1 2 3

由此可以看出,運算順序是:先執行的是等式右邊的表示式計算 按從左到右的順序 執行等式右邊的**。

接著證明賦值的操作也是按從左到右的順序執行:

# -*- coding:utf-8 -*-

class

listnode

:def

__init__

(self, x)

: self.val = x

self.

next

=none

class

solution

:def

reverselist

(self, head: listnode)

-> listnode:

ifnot head:

return

none

before =

none

while head:

# head, before, head.next = head.next, head, before error

# head.next, before, head = before, head, head.next right

# head.next, head, before = before, head.next, head right

# head, head.next, before = head.next, before, head error

try:

print

(head.val)

print

(head.

next

.val)

print

(before.val)

except

:pass

head.

next

, before, head = before, head, head.

next

try:

print

(head.val)

print

(head.

next

.val)

print

(before.val)

except

:pass

return before

# 新建鍊錶

lst =

[listnode(1)

, listnode(2)

, listnode(3)

, listnode(4)

, listnode(5)

]for i in

range

(len

(lst)-1

):lst[i]

.next

= lst[i+1]

obj = solution(

)a = obj.reverselist(lst[0]

)print

(a.val)

這段**是反轉鍊錶的**,即將鍊錶1->2->3->4->5 反轉為鍊錶 5->4->3->2->1。head.next, before, head = before, head, head.next

這行**的寫法有**中注釋裡列出的4種寫法。其中,1、4兩種寫法執行後報錯,2、3兩種寫法執行後正確。原因在於賦值的過程是按從左到右的順序執行的。

head, before, head.next = head.next, head, before報錯的**為例:

程式開始,head指向第乙個節點 1 。

先對head執行賦值操作,head更新後指向節點 2 。

再對head.next執行賦值操作,此時head.next 等價於 節點 2 -> next 。這行**的本意是 更新 節點 1 ->next 的值。

因此這行**執行後報錯。

只有當head.next 賦值 操作 在 head 之前,**才正常執行(2、3兩種寫法)。

由此證明,賦值操作順序也是按從左到右執行。

python 同時給多個變數賦值

python中可以同時給多個變數賦值,下面列舉了三種方法 assign values directly a,b 0,1 assert a 0 assert b 1 assign values from a list r,g,b red green blue assert r red assert g...

Golang 多個變數同時賦值

程式設計最簡單的演算法之一,莫過於變數交換。交換變數的常見演算法需要乙個中間變數進行變數的臨時儲存。用傳統方法編寫變數交換 如下 var a int 100 var b int 200 var t int t a a b b t fmt.println a,b 在計算機剛發明時,記憶體非常 精貴 這...

宣告變數 如果同時宣告多個變數

如果同時宣告多個變數,可以用以下語句 也可以按如下宣告 dim a as integer,b as integer,c as integer但是不可以按如下宣告 dim a,b,c as integer 如果這樣操作,僅有c宣告正確。如何檢查是否宣告成功呢?可以使用typename函式來判斷。msg...