在Lambda中定义变量

时间:2015-12-10 03:48:15

标签: python python-2.7 lambda

有没有办法在lambda中分配这样的变量?

(lambda x,y=[1]*x: both variables x and y would be used and modified in here)(input())

或者是否有另一种方法可以将变量y指定为x大小的列表?整个程序必须用一行写成没有分号,所以在lambda之外声明一个变量不会有帮助。

例如,可以实现这样的事情吗?

x=input()
y=[1]*x
for i in xrange(2,int(x**.5)+2):
        if y[i]:
            for j in xrange(i*i,x,i):
                y[j]=0

这些是x和y值,我可能想到的其他东西

1 个答案:

答案 0 :(得分:1)

这会被允许吗?

>>> f = lambda x,y=None: (x, [1]*x if y is None else y)
>>> f(10, [1, 1, 1])
(10, [1, 1, 1])
>>> f(15)
(15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])

此示例简单地计算为包含参数的元组,使用内联if语句实现y的默认参数值。

不分配lambda的立即调用(假设Python 2 input()行为):

>>> (lambda x,y=None: (x, [1]*x if y is None else y))(input("x? : "))
x? : 5
(5, [1, 1, 1, 1, 1])