python中的賦值

2022-08-15 03:57:13 字數 2510 閱讀 1728

>>> a = 'abc'          # 普通形式

>>> b = 123

>>> c = [1, 2, 3]

python中"="的右側可以接受任意型別的序列,也可以是可迭代的物件,只要長度等於左側序列即可

>>> (a, b) = ('1', '2')   # 元組賦值,括號可省略

>>> [a, b] = ['1', '2'] # 列表賦值

>>> a, b, c, d = 'spam' # 字串序列賦值

# python中交換兩個變數的值可以不用穿件第三個臨時變數

>>> x, y = 1, 2

>>> x, y = y, x

>>> x, y

(2, 1)

# 當等號左側與右側變數長度不一致時,考慮用分片解決

>>> num = '123'

>>> a, b = num[:1], num[1:]

>>> a, b

('1', '23')

>>> num = '123'

>>> a, b = list(num[:1]) + [num[1:]]

>>> a, b

('1', '23')

# 巢狀賦值

>>> ((a, b), c) = ('12','3')

>>> a, b, c

('1', '2', '3')

*x:序列賦值時,帶有*的名稱會被賦值乙個列表,該列表收集序列中剩下的沒被賦值給其他名稱的所有項,可用於=左右兩側變數數目不同的情況。

>>> num = [1, 2, 3, 4]

>>> a, b = num # 變數個數不同會報錯

traceback (most recent call last):

file "", line 1, in valueerror: too many values to unpack (expected 2)

>>> a, *b = num # 擴充套件序列解包

>>> a, b

(1, [2, 3, 4])

>>> first, *mid, last = num # 擴充套件序列解包的*可以出現在任何位置

>>> first, mid, last

(1, [2, 3], 4)

1. 帶星號的名稱值匹配到單個項,但仍然返回乙個列表
>>> a = [1, 2, 3, 4]

>>> b, c, d, *e = a

>>> (b, c, d, e)

(1, 2, 3, [4])

2. 若帶星號的名稱不能匹配到任何項,則返回乙個空列表
>>> a = [1, 2, 3, 4]

>>> b, c, d, e, *f = a

>>> (b, c, d, e, f)

(1, 2, 3, 4, )

3. 若用了多個帶星號的名稱則會報錯
>>> a = [1, 2, 3, 4]

>>> *b, c, *d = a

file "", line 1

syntaxerror: two starred expressions in assignment

4. 帶星號的名稱沒有被編寫到乙個列表中會報錯
>>> a = [1, 2, 3, 4]

>>> *b = a

file "", line 1

syntaxerror: starred assignment target must be in a list or tuple

>>> *b, = a

>>> b

[1, 2, 3, 4]

多目標賦值即將最右側的物件依次賦值給左側所有的名稱。

>>> a = b = c = 0

>>> (a, b, c)

(0, 0, 0)

多目標賦值其實是多個目標對同乙個記憶體空間的引用,這裡要分兩種情況,當被引用物件是不可變物件時則不存在問題;但是如果多目標都引用了同乙個可變物件,則會出現問題

>>> a = b = 1

>>> (a, b)

(1, 1)

>>> b = 2

>>> (a, b)

(1, 2)

# a的值沒有因為b的改變而改變

>>> a = b = [1, 2]

>>> (a, b)

([1, 2], [1, 2])

>>> b[1] = 3

>>> (a, b)

([1, 3], [1, 3])

# a的值隨著b值得改變而改變,即使沒有主動給a賦值,這是因為a,b同時引用了乙個可變物件,改變該物件則會通知改變a和b的值

Python 中的賦值

一 基本的賦值 如 a 3 這樣的 二 多個變數同時賦值 x,y,z 1,python hello world x 1 y python z hello world 三 把幾個值賦給乙個變數 a zhrq95 python a zhrq95 python 即 將右邊的兩個值裝入了乙個元組,然後將元組...

python中的賦值

一 python有簡單的賦值,如x 1 二 序列賦值,如 a,b,c 1,2,3 或者 a,b,c 1,2,3 又或者 a,b,c 1,2,3 序列賦值要求等號兩邊都是序列,變數的序列和值的序列,然後序列長度相等,也就是序列值一一對應 還可以進行巢狀賦值 a,b c 1,2 3 這樣a 1,b 2,...

python中的增量賦值

1,對可變的資料型別 a 1,2,3 print id a 1602469350792 b 4,5 a a b print a,id a 1,2,3,4,5 1602469421512 a 1,2,3 print id a 1736417136008 b 4,5 a b print a,id a 1...