передача списка списков в функцию - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть список [0.2, [1, 1.3], [1, 0.5, 2.1] ...], и мне нужно передать этот список в качестве аргумента функции, и я должен иметь возможность доступа к элементам в вызываемой функции, любезно помогите с кодом или подсказками, чтобы сделать это. Заранее спасибо

def func(list):

    #calculate opt_p using list    
    return(opt_p)

def metric(metric, K, N):              

      opt_p=[]
      creating a sequence such that(alpha is my variable name) 
      alpha_0 = [0.2]   has one element
      alpha_1 = [1, 1.3] two elements
      alpha_2 = [1, 0.5, 2.1] three elements ... upto alpha N suchthat last element has N  elements

      temp=func(alpha) #HERE IS THE ERROR *Invalid syntax
      opt_p.append(func(temp))

def main():

    metric(12, 5, 8)


if __name__ == '__main__':

    main()

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Возможно, я что-то не так понимаю, но похоже, что вы забыли строку

opt_alpha = [alpha_0, alpha_1, alpha_2]

непосредственно перед ошибкой.Когда вызывается функция, opt_alpha неизвестна.

Кстати, вы пропустите значение i.

Мой совет: попробуйте прочитать код еще раз.Первое, что думают, это запустить if __name__.Тогда основная функция.Затем метрика, а затем функция.Следуйте своим переменным.Если вы не привыкли к отладке, возьмите ручку, немного бумаги и пошагово запишите все значения переменных.Через минуту вы увидите, где были ошибки.

РЕДАКТИРОВАТЬ:

Из-за комментария:

Посмотрите на этот пример.

>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [3, 4, 5]
>>> l = [a, b, c]
>>> l
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> def f(l):
...     for element in l:
...             print element
...     print "--", l[2][1]
... 
>>> f(l)
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
-- 4
>>> 

Нет философии передачи списка списков для работы.Вы просто ... делаете это.

1 голос
/ 01 февраля 2012

Я думаю, у вас просто путаница с синтаксисом. Если переменная альфа, то она должна быть установлена ​​так:

 alpha = [[] for x in range(0,3)]
 alpha[0] = [list]
 alpha[1] = [other list]
 ...

 func(alpha)

и, как уже было отмечено, вы не определили 'i', поэтому оно будет создано при вызове функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...