Python 2:如何将元组参数传递给函数(含reshape应用场景)
用Python参数解包传递可变长度元组给函数
嘿,这个问题其实用Python的参数解包特性就能完美解决,刚好适配你说的sympy reshape场景!
核心方法:用*操作符解包元组
你已经通过args = A.shape拿到了可变长度的形状元组,只需要在调用reshape时,在元组前加上星号*,Python就会自动把元组里的每个元素拆成函数的单独位置参数——不管元组长度是多少,这个写法都能适配。
具体示例(结合sympy场景)
比如你有sympy矩阵A,想把另一个矩阵B reshape成和A一样的形状:
from sympy import Matrix # 示例:创建一个3×4的sympy矩阵A A = Matrix([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) args = A.shape # 得到形状元组(3, 4) # 创建一个12元素的一维矩阵B B = Matrix(range(12)) # 用*args解包元组,传递给reshape B_reshaped = B.reshape(*args) print(B_reshaped.shape) # 输出(3, 4),和A的形状一致
为什么这个方法管用?
Python中的*操作符专门用来解包可迭代对象(元组、列表、集合等),把它们的元素逐个作为位置参数传递给函数。而sympy的reshape方法正好需要接收多个整数作为形状参数,A.shape返回的元组刚好是这些整数的集合,完全匹配函数的参数要求。哪怕A是n维数组/矩阵,这个写法也能自动适配元组的长度,不用手动修改代码。
内容的提问来源于stack exchange,提问作者Mauricio Fernández
相关产品推荐
相关产品推荐

