Python 解压序列、可迭代对象并赋值给多个变量

Python数据结构和类型

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

现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量?

解决思路:先通过简单的解压赋值给多个变量,前提是变量的数量和序列元素的数量是一致的

下面是简单的代码

p = (1,2,3)
x,y,y = p
>>>x ---1
>>>y---2
>>>z---3

**代码实现1**
data = [ 'ABC',20,30.11,(16,28,99) ]   # data中的元素有4个
name,share,price,hello = data     # 赋值

>>>name
'ABC'

>>>share
20

>>>price
30.11

>>>date
(16,28,39)

**代码实现2**

data = [ 'ABC',20,30.11,(16,28,99) ]   

name,share,price,(one,two,three)= data 

>>>name 
'ABC'

>>>one

16

>>>two
28

>>>three
99


如果变量个数和元素的个数不匹配,就会出现错误


>>>p = ( 4,5)
x,y,z = p    #变量的个数超过元素的个数

ValueError: not enough values to unpack (expected 3, got 2)	

这种解压赋值适合任何迭代对象,字符串,。。。。

>>> a,b,c,d,e = p
>>> a
'h'
>>> b
'e'
>>> c
'l'
>>> d
'l'
>>> e
'o'
>>>

如果想要解压一部分,丢弃其他值,只需要通过任意变量进行占位,最后将这些变量丢弃即可

data = [ 'ABC',20,30.11,(16,28,99) ] 
_,share,price,_ = date
>>>share
20
>>>price
30.11

在测试中发现,输入丢弃变量的_的时候,显示的值是(16,28,99)

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

** 问题**

如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。 那么怎样才能从这个可迭代对象中解压出N个元素出来?

解决方案

Python的星号表达式可以用来解决这个问题

http://blog.csdn.net/liuxingen/article/details/50113923

函数参数前面的星号(*)

原文地址:https://www.cnblogs.com/Python666/p/6640288.html