您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Python解壓可迭代對象賦值給多個變量的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
現在有一個包含N個元素的可迭代對象,怎樣把它里面的元素解壓后同時賦值給N個變量?怎樣同時賦值給M個變量(M<N)?
p = [4, 5] x, y = p print(x, y) # 輸出結果:4 5 data = ['Test', 1, 3.14, (2021, 12, 1)] a, b, c, d = data print(a, b, c, d) # 輸出結果:Test 1 3.14 (2021, 12, 1) a, b, c, (year, month, day) = data print(a, b, c, year, month, day) # 輸出結果:Test 1 3.14 2021 12 1
當變量的個數少于可迭代對象元素的個數時,程序會拋出ValueError。這時,可以用Python的星號表達式來解決。
data = [1, 2, 3, 4, 5] a, b, *c, d = data print(a, b, c, d) # 輸出結果:1 2 [3, 4] 5
需要注意的是上面解壓出的c變量永遠是list類型,不管c的元素有幾個(包括0個)。
迭代解壓語法的幾個應用場景:
比如:
s = 'hello' a, b, c, d, e = s print(a, b, c, d, e)
# 輸出結果:h e l l o
record = ('ACME', 50, 123.45, (12, 18, 2012)) name, *_, (*_, year) = record print(name, year)
"""
輸出結果:
ACME 2012
"""
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)
"""
輸出結果:
foo 1 2
bar hello
foo 3 4
"""
line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false' uname, *field, homedir, sh = line.split(':') print(uname, homedir, sh)
"""
輸出結果:
nobody /var/empty /usr/bin/false
"""
看完上述內容,你們對Python解壓可迭代對象賦值給多個變量的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。