欢迎大家扫码关注我的微信公众号:
将序列分解为单独的变量-目录
- 一、问题
- 二、解决方案
- 三、讨论
一、问题
一个包含 N 个元素的元组或序列, 现在想将它分解为 N 个单独的变量。
二、解决方案
任何序列(或可迭代对象)都可以通过一个简单的赋值操作来分解为单独的变量。 唯一的要求就是变量的总数和结构要与序列相吻合。
>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
又如:
>>> data = ['a', 11, 22.1, (3, 4, 5)]
>>> s, i, f, t = data
>>> s
'a'
>>> t
(3, 4, 5)
>>> s, i, f, (t0, t1, t2) = data
>>> t0
3
>> t1
4
【注意】如果元素的数量不匹配, 将会报错(如将一个只有两个元素的序列赋值给 3 个变量)。
三、讨论
实际上不仅仅只是元组或列表, 只要对象是可迭代的, 那么就可以执行分解操作。 这包括字符串、 文件、 迭代器及生成器。 如:
>>> str = 'hello'
>>> a, b, c, d, e = str
>>> a
'h'
>>> e
'o'
如果我们在赋值的时候, 只想要其中的一部分值而丢弃另一部分, 则我们可以用一个平常用不到的变量来接收想要丢弃的值:
>>> lst = ['a', 11, 22.1, (3, 4, 5)]
>>> _, i, _, t = lst
>>> i
11
>>> t
(3, 4, 5)
【注意】一定要注意, 此时如果想要丢弃某些值, 那么接收这些值的变量一定不能在其他位置不重新赋值就使用。