【问题标题】:Python function parameters inside a list of lists [duplicate]列表列表中的Python函数参数[重复]
【发布时间】:2015-10-07 00:37:18
【问题描述】:

我有一个函数:

def func(a,b,c,d,e,f,g):
    do something using the paramters

我想通过循环使用param1param2 等来运行函数func

我有一个列表中的参数,例如:

param1 = list[a,b,c,d,e,f,g]
param2 = list[a1,b1,c1,d1,e1,f1,g1]

我试过了

main_list = [param1,param2,....,param8]

for a in main_list:
    func(a)

但这似乎不起作用!

编辑:

我的函数有 7 个参数,我必须循环 8 次,我有 8 个这样不同的参数列表 –

【问题讨论】:

  • func(*a) 而不是 func(a)
  • 您实际上是在传递列表列表吗?
  • @PadraicCunningham:我的函数有 7 个参数,我必须循环 8 次,我有 8 个这样不同的参数列表
  • 只需循环解压,然后按照建议,更改为 func(*a)

标签: python list function loops


【解决方案1】:

这是你想要的吗:

def func(*vargs):
    for a in vargs:
       print a


func(*[1,2,3])
1
2

即)

def func(*vargs):
    for a in vargs:
       print a


func(*main_list)

编辑

a,g,e=10,40,50

def func(a,b,c):
   print a,b,c


func(*[a,g,e])
10 40 50

3

【讨论】:

  • 我想运行我的函数,它接受了 7 个参数,所有这些参数我都存储在一个列表中
【解决方案2】:

这正是你所要求的:

def func(a,b,c,d,e,f,g):
    pass

param1 = [1,2,3,4,5,6,7]
param2 = [11,21,31,41,51,61,71]

main_list = [param1, param2]

for a in main_list:
    func(*a)

【讨论】:

    【解决方案3】:

    使用*args 语法:

    for params in [param1, param2, param3, ...]:
        func(*params)
    

    *params 语法然后将序列扩展为函数的单独参数。当然,请确保该位置参数的数量与您的函数所期望的相符。

    演示:

    >>> def func(a, b, c, d, e, f, g):
    ...     print a, b, c, d, e, f, g
    ... 
    >>> param1 = ('a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1')
    >>> param2 = ('a2', 'b2', 'c2', 'd2', 'e2', 'f2', 'g2')
    >>> for params in [param1, param2]:
    ...     func(*params)
    ... 
    a1 b1 c1 d1 e1 f1 g1
    a2 b2 c2 d2 e2 f2 g2
    

    【讨论】:

    • 我是否还需要更改我的func 以只接受一个参数?因为现在我得到了TypeError: func() takes exactly 7 arguments (8 given)
    • @ThePredator:你的函数只需要 7 个参数。你为什么要让它与 8 一起工作?
    • 我的函数有 7 个参数,我必须循环 8 次,我有 8 个这样不同的参数列表
    • @ThePredator:啊,我误解了你的设置;我认为 param1 包含 a 参数的所有值,而不是该调用的 7 个参数。
    【解决方案4】:

    尝试通过unpacking参数中的参数列表调用函数。示例 -

    main_list = [param1,param2,....,param8]
    
    for a in main_list:
        func(*a)
    

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2010-10-09
      • 2019-09-23
      • 2015-06-06
      • 2015-04-22
      • 2019-05-20
      相关资源
      最近更新 更多