如何将整数系列作为参数传递给python函数?

时间:2014-01-14 18:01:55

标签: python function

有没有办法在python中以更简洁的方式执行以下语句?

而不是

a, b, c, d = f(1), f(2), f(3), f(4)

这样:

a, b, c, d = some_way(f(x))

3 个答案:

答案 0 :(得分:4)

您可以尝试map()

>>> def f(x): return x*x
... 
>>> a,b,c,d = map(f, (1,2,3,4))
>>> 
>>> a
1
>>> b
4
>>> c
9
>>> d
16

如果你的函数参数总是连续的,那么你也可以这样做:

>>> a,b,c,d = map(f, range(1,5))

答案 1 :(得分:3)

你可以像这样使用列表理解

a, b, c, d = [f(i) for i in xrange(1, 5)]

或使用map功能,如此

a, b, c, d = map(f, xrange(1, 5))

在这两种情况下,

print a, b, c, d

将打印

1 4 9 16

修改

正如评论部分所述,这是curried版本

def curry_function(function, first, second):
    return lambda third: function(first, second, third)

f = curry_function(f, "dummy1", "dummy2")

然后您可以使用上面显示的代码。我们可以像这样使用functools.partial

,而不是编写我们自己的currying函数版本
from functools import partial
f = partial(f, "dummy1", "dummy2")

答案 2 :(得分:0)

只是需要一些代码的附加注释...在您要提供参数的情况下,如果使用列表推导,则不需要咖喱函数:

# f(arg1, arg2, index)

a,b,c,d = [f(arg1, arg2, x) for x in range(1,5)]

列表推导在映射中大多等同于使用,但这是它们优越的一种方式。