【重温Python】1.1-数据结构与算法-解压序列赋值给多个变量

问题:

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

解决方案:

任何的序列(可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量。

唯一的限制条件就是变量的数量必须跟序列元素的数量是一样的

下面是一个简单的示例:

p = (4, 5)
x, y = p
print(x)
print(y)

另一个示例:

data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
name, shares, price, (year, mon, day) = data

扩展:

  1. 如果变量个数与序列元素的个数不匹配,会产生一个异常。
  2. 实际上,这种解压赋值可以用在任何可迭代对象上面,而不仅仅是列表或者元组,包括字符串,文件对象,迭代器和生成器。

可迭代对象示例:

s = "hello"
a, b, c, d, e = s
data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
_, shares, price, _ = data

在 Python,不存在废弃符的语法。但是可以使用任意变量名去占位,到时候丢掉这些变量就行了。例如,上述代码中的’_’。需要保证的是,这些占位符变量名在其它地方没有被用到。