【问题标题】:Passing a set as a parameter in Python在 Python 中将集合作为参数传递
【发布时间】:2011-04-22 01:13:04
【问题描述】:

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

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

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

另外,我打算在程序中构造矩阵的方式(也许是唯一的方式?)如下:

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

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

谢谢

【问题讨论】:

标签: python arrays matrix


【解决方案1】:

JoshAdel 是对的(在现在已经离去的评论中),如果没有一些代码和示例输出,通常不可能知道发生了什么,但在这种情况下,我想我知道:

def gauss([A]):

不是有效的 Python 语法。声明函数时,不能用方括号将参数名称括起来。只需使用

def gauss(A):

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

gauss(a)

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

【讨论】:

  • 在你发布之前删除了评论,因为我意识到了这个问题
【解决方案2】:

如果您不熟悉 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 这样的函数,因为 []可变的,并将导致问题作为默认参数。

正如其他人已经建议的那样,def gauss(a): ... 将修复您的错误。

【讨论】:

    【解决方案3】:

    def func(param): 是您定义函数的方式。在函数定义期间,您不会“传递”任何东西。这行得通吗?

    def gauss(a):
        # do something with `a`
    
    gauss([A])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2016-07-22
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多