Python中使用Lambd的While循环

2024-05-29 03:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的简单演示while循环。

count = 0
while count < 5:
   print 'The count is:', count
   count = count + 1

现在我想使用lambdas更改normal while循环。

def func():
    count = 0
    print 'The count is:', count
    count += 1

a = lambda count: (count < 5 and func() )
print a

我做错什么了?


Tags: andthelambdaisdefcountfuncprint
3条回答

lambda与loop无关。这只是定义函数的内联方法。

不使用lambda,您可以编写下面的代码。使用lambda的唯一区别是定义的函数得到一个名称。

def func(n):
    print 'The count is:', n

def mylambda(count): 
    return (count < 5 and func())

a = mylambda

print a

现在也许你可以自己看看怎么了?

  • 只写“a”不会调用函数(需要括号)
  • 你的lambda需要一个count参数
  • 没有循环,您只是在计算一个布尔值,将谓词'count<;5'和调用func()的结果结合起来
  • func不返回任何内容,从今以后它将始终不返回任何内容
  • 您将得到一个函数,该函数将根据参数count的值返回False或None。。。

实际上,我还在想你到底想干什么?循环调用lambda?创建递归lambda?任何人都可以猜到更多细节。

您的代码有许多错误,我认为不应该使用lambda来调用没有返回值的另一个函数。如果你必须这样做,它会像:

def func(n):
    i = 0
    while i < n:
        print 'The count is:', i
        i += 1

a = lambda count: func(count)
a(5)

你的问题的答案在于细节

See section Function definitions for the syntax of parameter lists. Note that functions created with lambda expressions cannot contain statements.

whileCompund Statement的一部分

简单来说

如果你能在表格中写下你的函数

def name(arguments):
    return expression

你可以把它转换成lambda

name = lambda arguments: expression

I am trying to implement while loop using lambdas

你应该认真考虑使用itertools.dropwhileitertools.takewhile

相关问题 更多 >

    热门问题