解包赋值
在python中,序列解包赋值是一种常用的赋值语法。
a, b, c = (1, 2, 3)
x, y = [4, 5]
print(a, b, c)
print(x, y)
这种用法是很常见的。
其实,=号右侧不但可以使用常见的列表、元组等内置类型,更一般的对于所有的可迭代对象都是支持的,包括字典、文件、range、zip object、enumerate object、map object、filter object、生成器等。
a, b, c = range(3)
print(a, b, c)
对于文件,可以使用解包赋值语法将行赋值给变量。
函数调用时,位置参数的传递也可以使用解包的方法进行传参。
def f(a, b, c):
print(a + b + c)
f(*range(3))
打印矩阵
打印矩阵或列表是一种常见的需求。一般打印列表可以使用for循环简单实现:
a = [1, 2, 3]
for i in a:
print(i, end=' ')
但是由于解包赋值的存在,可以使用更简洁的代码,不需要使用循环语句:
a = [1, 2, 3]
print(*a)
尤其是对于矩阵的打印,避免了嵌套循环:
A = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
for row in A:
print(*row)