将列表列表传递给函数

时间:2012-02-01 18:26:15

标签: python list function

我有一个列表[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 个答案:

答案 0 :(得分:4)

也许我理解错了,但看起来你忘记了

opt_alpha = [alpha_0, alpha_1, alpha_2]

错误之前的行。 调用func时,opt_alpha未知。

顺便提一下,你错过了i值。

我的建议是:再次尝试阅读代码。第一个认为正在运行的是if __name__。然后是主要功能。然后是度量,然后是func。跟随你的变量。如果您不习惯在脑海中进行调试,请用笔,一些纸张并逐步写出所有变量值。你会在一分钟内看到错误在哪里。

编辑:

由于提交:

看看这个例子。

>>> 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 :(得分:1)

我认为你只是语法混乱。如果alpha是变量,那么它应该像这样设置

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

 func(alpha)

并且如上所述,您尚未定义'i',因此它将在函数调用中创建。