问题描述
现在有一个包含N个元素的可迭代对象,怎样把它里面的元素解压后同时赋值给N个变量?怎样同时赋值给M个变量(M 可以通过一个简单的赋值语句解压并赋值给多个变量,前提是变量的数量和序列元素数量是一样的(否则会抛出ValueError)。 当变量的个数少于可迭代对象元素的个数时,可以用Python的星号表达式来解决。 需要注意的是上面解压出的c变量永远是list类型,不管c的元素有几个(包括0个)。 任何可迭代对象都可以实现这种解压赋值,包括列表、元组、字符串、文件对象、迭代器和生成器。解决方案
p = [4, 5]
x, y = p
print(x, y)
# 输出结果:4 5
data = ["Test", 1, 3.14, (2021, 12, 1)]
a, b, c, d = data
print(a, b, c, d)
# 输出结果:Test 1 3.14 (2021, 12, 1)
a, b, c, (year, month, day) = data
print(a, b, c, year, month, day)
# 输出结果:Test 1 3.14 2021 12 1
data = [1, 2, 3, 4, 5]
a, b, *c, d = data
print(a, b, c, d)
# 输出结果:1 2 [3, 4] 5
总结
比如:s = "hello"
a, b, c, d, e = s
print(a, b, c, e)
# 输出结果:h e l o