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)
以防万一,如果有人正在寻找类似的问题...
此处给出的大多数解决方案都是一行,并且非常易读和简单。只是想添加一个不需要使用lambda的代码(我假设您只是为了使其成为一行代码而尝试使用lambda)。相反,您可以使用简单的列表理解。
[print(i) for i in x]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,返回值将是None的列表。
要添加到chepner的Python 3.0答案中,您可以选择执行以下操作:
x = lambda x: list(map(print, x))
Run Code Online (Sandbox Code Playgroud)
当然,这仅当您将来有使用Python> 3的方式时...在我看来,这看起来更干净一些,但是它也有一个怪异的返回值,但是您可能仍在丢弃它。
我将把它留在这里作为参考。