我有一个功能:
def func(a,b,c,d,e,f,g):
do something using the paramters
我希望通过循环播放func
和param1
来运行函数param2
。
我在列表中有参数,例如:
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个不同的参数列表 -
答案 0 :(得分:2)
使用*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
答案 1 :(得分:2)
这就是你想要的:
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
答案 2 :(得分: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 :(得分:0)
尝试通过unpacking
参数中的参数列表调用函数。示例 -
main_list = [param1,param2,....,param8]
for a in main_list:
func(*a)