我有一段看起来像这样的代码:
myfunction(a, b, c)
myfunction(d, e, f)
myfunction(g, h, i)
myfunction(j, k, l)
参数的数量不会改变,但每次都必须连续调用不同值的函数。这些值不会自动生成并手动输入。是否有内联解决方案来执行此操作而不创建调用此函数的函数?类似的东西:
myfunction(a, b, c)(d, e f)(g, h, i)(j, k, l)
任何帮助表示赞赏。提前谢谢!
答案 0 :(得分:4)
简单,使用元组解包
tripples = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i'), ('j', 'k', 'm')]
for tripple in tripples:
print(myfunction(*tripple))
答案 1 :(得分:2)
我很惊讶没有人提到map
map(func, iter)
它将iter
中的每个可迭代对象映射到在第一个参数中传递的func
。
对于您的用例,它应该看起来像
map(myfunction, *zip((a, b, c), (d, e, f), (g, h, i), (j, k, l)))
答案 2 :(得分:0)
嗨我不确定它是否是最pythonic的方式,但如果您在列表中定义了参数,则可以在循环中调用该函数,并从列表的开头删除n参数:
查看示例代码:
{{1}}
答案 3 :(得分:0)
您可以在此处滥用列表理解
[myfunction(*item) for item in ((a, b, c), (d, e, f), (g, h, i), (j, k, l))]
答案 4 :(得分:-2)
我认为你想要做的就是这样......
myfunction(myfunction(d, e, f), myfunction(g, h, i), myfunction(j, k, l))