Chapter One:数据结构和算法-解压序列赋值给多个变量

一、问题:

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

二、解决方案:

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>> 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
6
《Python Cookbook》第三版, Release  2.0 . 0
>>> name
'ACME'
>>> year
2012
>>> mon
12
>>> day
21
>>>

如果变量个数和序列元素的个数不匹配,会产生一个异常。
代码示例:

1
2
3
4
5
6
>>> p  =  ( 4 5 )
>>> x, y, z  =  p
Traceback (most recent call last):
File  "<stdin>" , line  1 in  <module>
ValueError: need more than  2  values to unpack
>>>

三、总结

实际上,这种解压赋值可以用在任何可迭代对象上面:

  1. 列表

  2. 元组

  3. 字符串

  4. 文件对象

  5. 迭代器

  6. 生成器

代码示例:

1
2
3
4
5
6
7
8
9
>>> s  =  'Hello'
>>> a, b, c, d, e  =  s
>>> a
'H'
>>> b
'e'
>>> e
'o'
>>>

有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python 并没有提
供特殊的语法。

但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
代码示例:

1
2
3
4
5
6
7
>>> data  =  'ACME' 50 91.1 , ( 2012 12 21 ) ]
>>> _, shares, price, _  =  data
>>> shares
50
>>> price
91.1
>>>

你必须保证你选用的那些占位变量名在其他地方没被使用到。

猜你喜欢

转载自www.cnblogs.com/luoahong/p/9680847.html
今日推荐