内部lambda的Python循环

Fer*_*imo 12 python lambda for-loop

在我的代码中,我需要尽可能简化我的代码行.编辑:我认为我不够清楚 - 它需要是一行代码.我需要在lambda表达式中放置一个for循环,类似于:

x = lambda x: (for i in x : print i)
Run Code Online (Sandbox Code Playgroud)

我只是不知道如何实现它.谢谢!

che*_*ner 14

由于for循环是一个语句(就像print在Python 2.x中一样),因此不能将它包含在lambda表达式中.相反,您需要将该write方法sys.stdout与该join方法一起使用.

x = lambda x: sys.stdout.write("\n".join(x) + "\n")
Run Code Online (Sandbox Code Playgroud)


Vik*_*kas 7

以防万一,如果有人正在寻找类似的问题...

此处给出的大多数解决方案都是一行,并且非常易读和简单。只是想添加一个不需要使用lambda的代码(我假设您只是为了使其成为一行代码而尝试使用lambda)。相反,您可以使用简单的列表理解。

[print(i) for i in x]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,返回值将是None的列表。


Dai*_*air 6

要添加到chepner的Python 3.0答案中,您可以选择执行以下操作:

x = lambda x: list(map(print, x))
Run Code Online (Sandbox Code Playgroud)

当然,这仅当您将来有使用Python> 3的方式时...在我看来,这看起来更干净一些,但是它也有一个怪异的返回值,但是您可能仍在丢弃它。

我将把它留在这里作为参考。