Python解壓可迭代對象賦值給多個(gè)變量詳解
問題描述
現(xiàn)在有一個(gè)包含N個(gè)元素的可迭代對象,怎樣把它里面的元素解壓后同時(shí)賦值給N個(gè)變量?怎樣同時(shí)賦值給M個(gè)變量(M<N)?
解決方案
1.將N個(gè)元素賦值給N個(gè)變量,可以通過如下一個(gè)簡單的賦值語句實(shí)現(xiàn)。
p = [4, 5] x, y = p print(x, y) # 輸出結(jié)果:4 5 data = ['Test', 1, 3.14, (2021, 12, 1)] a, b, c, d = data print(a, b, c, d) # 輸出結(jié)果:Test 1 3.14 (2021, 12, 1) a, b, c, (year, month, day) = data print(a, b, c, year, month, day) # 輸出結(jié)果:Test 1 3.14 2021 12 1
2.如何將N個(gè)元素賦值給M個(gè)變量(M<N)?
當(dāng)變量的個(gè)數(shù)少于可迭代對象元素的個(gè)數(shù)時(shí),程序會(huì)拋出ValueError。這時(shí),可以用Python的星號(hào)表達(dá)式來解決。
data = [1, 2, 3, 4, 5] a, b, *c, d = data print(a, b, c, d) # 輸出結(jié)果:1 2 [3, 4] 5
需要注意的是上面解壓出的c變量永遠(yuǎn)是list類型,不管c的元素有幾個(gè)(包括0個(gè))。
總結(jié)
迭代解壓語法的幾個(gè)應(yīng)用場景:
1.任何可迭代對象都可以實(shí)現(xiàn)這種解壓賦值,包括列表、元組、字符串、文件對象、迭代器和生成器。
比如:
s = 'hello' a, b, c, d, e = s print(a, b, c, d, e)
# 輸出結(jié)果:h e l l o
2.有時(shí)候,你想解壓一些元素后丟棄它們,可以使用一個(gè)普通的廢棄名稱,比如_或者ign(ignore)。
record = ('ACME', 50, 123.45, (12, 18, 2012))
name, *_, (*_, year) = record
print(name, year)
"""
輸出結(jié)果:
ACME 2012
"""
3.迭代元素為可變長元組的序列:
records = [
('foo', 1, 2),
('bar', 'hello'),
('foo', 3, 4),
]
def print_foo(x, y):
print('foo', x, y)
def print_bar(s):
print('bar', s)
for tag, *args in records:
if tag == 'foo':
print_foo(*args)
elif tag == 'bar':
print_bar(*args)
"""
輸出結(jié)果:
foo 1 2
bar hello
foo 3 4
"""
4.字符串的分割
line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
uname, *field, homedir, sh = line.split(':')
print(uname, homedir, sh)
"""
輸出結(jié)果:
nobody /var/empty /usr/bin/false
"""
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)項(xiàng)的兩種方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)項(xiàng)的兩種方法,涉及Python數(shù)組元素的遍歷、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python 16進(jìn)制與中文相互轉(zhuǎn)換的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
pandas數(shù)據(jù)篩選和csv操作的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas數(shù)據(jù)篩選和csv操作的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python詳解如何通過sshtunnel pymssql實(shí)現(xiàn)遠(yuǎn)程連接數(shù)據(jù)庫
為了安全起見,很多公司服務(wù)器數(shù)據(jù)庫的訪問多半是要做限制的,由專門的DBA管理,而且都是做的集群,數(shù)據(jù)庫只能內(nèi)網(wǎng)訪問,所以就有一個(gè)直接的問題是,往往多數(shù)時(shí)候,在別的機(jī)器上(比如自己本地),是不能訪問數(shù)據(jù)庫的,給日常開發(fā)調(diào)試造成了很大不便2021-10-10
Python?for循環(huán)詳細(xì)講解(附代碼實(shí)例)
這篇文章主要給大家介紹了關(guān)于Python?for循環(huán)詳細(xì)講解的相關(guān)資料,在Python中,for循環(huán)是一種常用的控制結(jié)構(gòu),用于遍歷序列(如列表、元組、字符串等)中的元素,需要的朋友可以參考下2024-03-03
解決pycharm debug時(shí)界面下方不出現(xiàn)step等按鈕及變量值的問題
這篇文章主要介紹了解決pycharm debug時(shí)界面下方不出現(xiàn)step等按鈕及變量值的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

