Передача набора в качестве параметра в Python - PullRequest
1 голос
/ 22 апреля 2011

Я пытаюсь создать метод в python (и использующий numpy), чтобы взять матрицу A и уменьшить ее до уменьшенной формы эшелона строк, используя метод исключения Гаусса.

Я столкнулся с моей первой проблемой, которая пытается передать набор в качестве параметра.

Например: def gauss([A]): выдает мне ошибку, которая меня удивила. Почему это?

Кроме того, я планирую построить матрицы (может быть, это единственный способ?) В программе следующим образом:

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

Так что я хотел бы иметь возможность передать это a в мой метод gauss(a), а затем сделать так, чтобы Гаусс совершил ужасные вещи с твоей матрицей

спасибо

Ответы [ 3 ]

6 голосов
/ 22 апреля 2011

ДжошАдель прав (в недавно умершем комментарии), что обычно невозможно сказать, что происходит без некоторого кода и примера вывода, но в этом случае, я думаю, я знаю:

def gauss([A]):

недействительный синтаксис Python.Когда вы объявляете функцию, вы не можете заключать имена параметров в квадратные скобки.Просто используйте

def gauss(A):

И если вы хотите передать матрицу / массив / вложенный список или что-то еще в функцию, просто сделайте это!

gauss(a)

В методе, который вы затем можете обработатьпараметр A в виде матрицы.

4 голосов
/ 22 апреля 2011

Дополнительная информация, если вы новичок в 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): ... исправит ваши ошибки.

2 голосов
/ 22 апреля 2011

def func(param): - это способ определения функции.Вы ничего не «пропускаете» во время определения функции.Это работает?

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

gauss([A])
...