『Python CoolBook』數據結構和算法_多變量賦值&「*」的兩種用法

多變量賦值

a = [1,2,(3,4)]
b,c,d = a
print(b,c,d)
b,c,(d,e) = a
print(b,c,d,e)
1 2 (3, 4)
1 2 3 4
a = "zxc"
b,c,d = a
print(b,c,d)

z x c python

 

*:集成不定長元素 & 集合型實參展開爲多個虛參

record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record

name,email,phone_numbers

 ('Dave', 'dave@example.com', ['773-555-1212', '847-555-1212'])數據結構

注意,函數

  1. *後修飾的變量不管接收元素多少,必定會返回list數據結構。
  2. *也能夠放在函數實參處,此時會將list的元素展開分別賦值於各個虛參;和上面集成多元素爲list相反,此時表示將list展開將元素賦值於多變量。
records = [
    ('foo', 1, 2),
    ('bar', 'hello'),
    ('foo', 3, 4),
]

def do_foo(x, y):
    print('foo', x, y)

def do_bar(s):
    print('bar', s)

for tag, *args in records:
    if tag == 'foo':
        do_foo(*args)
    elif tag == 'bar':
        do_bar(*args)
foo 1 2
bar hello
foo 3 4
相關文章
相關標籤/搜索