【问题标题】:passing list of lists to a function将列表列表传递给函数
【发布时间】:2012-02-01 18:26:14
【问题描述】:

我有一个列表[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()

【问题讨论】:

  • 你从未定义过opt_alpha。只需通过[alpha_0, alpha_1,...]
  • @RAFIQ:为了将来使用,您可以通过选择代码并点击文本框上方的大括号按钮 -- {} -- 或键入 control-K 来格式化代码。
  • 您的代码没有意义,您缺少一些关键变量。
  • 从他的last question 的先前编辑版本来看,我认为这不是整个代码。
  • 不要重复你的问题。阅读你之前的问题的 cmets 并将它们牢记在心。通过阅读Python tutorial 并学习基础知识,您似乎获益最多。

标签: python list function


【解决方案1】:

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

opt_alpha = [alpha_0, alpha_1, alpha_2]

错误之前的行。 调用 func 时,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
>>> 

没有将列表传递给函数的哲学。你只需......做它。

【讨论】:

  • 请了解 alpha 列表已创建并获取 alpha 并告诉我如何将其传递给函数(此处为 func)并在侧 func 中访问 alpha 列表
  • @Gandi 对我来说听起来像是道家哲学:)
【解决方案2】:

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

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

 func(alpha)

如前所述,您尚未定义“i”,因此它将在函数调用中创建。

【讨论】:

  • 说您正在通过某种逻辑 0.2、1、1.3、1、0.5、2.1 生成数字,并且需要对它们进行分组,以便第一组有一个元素,第二组有 2 个元素,第三组有 3 个,依此类推.我将它们表示为 [0.2, [1, 1.3], [1, 0.5, 2.1] ...] 并将它们传递给函数
  • 这样第一个列表不是列表,它需要是 [[0.2],[1,1.3],[1,0.5,2.1]] 否则列表的第一个元素就是如果您尝试将其编入索引,则会出现错误。
  • 我们如何实现这个逻辑来将这些分组的值传递给列表以外的函数?
  • 我认为列表是一种很好的方式。您可以改用元组,但我们为什么不尝试找出是什么让这对您来说很困难呢。也许您可以再问一个问题?
  • 好的,在您提到的示例中,您可以使用单个变量而不是使用循环的 a、b、c 来再次生成相同的列表。这是因为长度是可变的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多