擅长:python、mysql、java
<p>使用普通的<code>lambda</code>来迭代Python中的任何内容听起来都非常错误。当然,迭代序列和集合的最python方法是使用列表理解和生成表达式,比如@Andrey presented。</p>
<p>如果面试官依赖于更具理论性/计算机科学性的答案,那么值得注意的是,使用lambdas迭代<em>是非常有可能的,尽管我必须强调,这不是python,也不适用于学术练习以外的任何环境:</p>
<pre><code># the legendary Y combinator makes it possible
# to let nameless functions recurse using an indirection
Y = lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args)))
# our iterator lambda
it = lambda f: lambda Lst: (Lst[0], f(Lst[1:])) if Lst else None
# see it in action:
Y(it)([1,2,3])
=> (1, (2, (3, None)))
</code></pre>