Python解压序列赋值给多个变量

解压可迭代对象赋值给多个变量

依次解压元素

首先,序列肯定是可迭代对象。
任何的可迭代对象可以通过一个简单的赋值语句解压并赋值给多个变量。唯一的前提就是变量的数量与可迭代对象的数量是一样的。

>>> p = (4, 5)
>>> x, y = p 
>>> x
4
>>> y 
5
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name
'ACME'
>>> date
(2012, 12, 21)
>>> name, shares, price, (year, mon, day) = data
>>> s = 'Hello'
>>> a, b, c, d, e = s 
>>> a
'H'
>>> b
'e'

若只想取一部分值,可以使用任意变量名去占位。

>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>>_, shares, price, _ = data

解压N个元素

使用星号表达式例子:

def drop_first_last(grades):
	 first, *middle, last = grades 
	 return avg(middle)
//去掉一个最高分去掉一个叫最低分,求平均值

星号表达式还可以实现数据结构里学到的那种取head,tail的功能

def get_head(list):
    head, *tail = list
    return head

def get_tail(list):
    head, *tail = list
    return tail

星号解压语法在字符串操作的时候也会很有用,比如字符串的分割。

line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
user_name, *fields, homedir, sh = line.split(':')

你可能感兴趣的:(Python解压序列赋值给多个变量)