在Python中将集合作为参数传递

时间:2011-04-22 01:13:04

标签: python arrays matrix

我正在尝试在python中创建一个方法(并利用numpy)来获取矩阵A并使用高斯消元法将其减少为减少的行梯形形式。

我遇到了第一个试图将一个集合作为参数传递的问题。

例如:def gauss([A]):给我一个错误,这让我很惊讶。这是为什么?

另外,我计划在程序中构建矩阵的方式(也许是唯一的方法?)如下:

a = numpy.array([[1 ,2 ,3] , [4 ,5 ,6] , [7 ,8 ,9]])

所以我希望能够将a传递给我的方法gauss(a),然后高手对你的矩阵做一些可怕的事情

谢谢

3 个答案:

答案 0 :(得分:6)

JoshAdel是正确的(在现已离开的评论中),如果没有一些代码和示例输出通常无法判断发生了什么,但在这种情况下我想我知道:

def gauss([A]):

是无效的Python语法。当您声明一个函数时,不能用括号括起参数名称。只需使用

def gauss(A):

如果你想将矩阵/数组/嵌套列表或其他内容传递给函数,那就去做吧!

gauss(a)

在该方法中,您可以将参数A视为矩阵。

答案 1 :(得分:4)

如果您不熟悉Python中的Python和函数定义,还需要了解更多信息。

[A](即方括号中的A)是文字表达式,用于制作包含A的列表。就像42是用于“制作”整数42的文字表达式一样,'foobar'是“制作”字符串foobar等的文字表达。

因此尝试使用def gauss([A]): pass来定义函数是没有意义的,因为尝试定义像def gauss(42): pass这样的函数没有意义。

然而def gauss(a=20): pass完全是另一个故事。在这种情况下,它创建一个参数a默认值为20的函数。作为旁注,建议不要定义像def gauss(a=[]): pass这样的函数,因为{{1是 mutable ,会导致问题成为默认参数。

正如其他人已经建议[]将解决您的错误。

答案 2 :(得分:2)

def func(param):是您定义函数的方式。在函数定义期间,您不会“传递”任何内容。这有用吗?

def gauss(a):
    # do something with `a`

gauss([A])