我有这段我无法理解的代码片段:
>>> l = lambda: -4, 'c', 0
>>> i = iter(l)
>>> i
<tuple_iterator object at 0x00700CD0>
>>> next(i)
<function <lambda> at 0x0070A4F8>
>>> next(i)
'c'
>>> next(i)
0
>>> next(i)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>
为什么它在第一次迭代时返回 lambda 对象,而不是 -4?
请您参考如下方法:
我认为您可能误解了l 是什么。
l 是 3 个元素的元组:
- 返回 -4 的 lambda
- 字符串
c - 整数0
当您创建迭代元组的迭代器时,对 next 的第一次调用当然会给您一个 lambda!
也许你打算调用 lambda:
next(i)()
或者您可能打算像这样声明 l:
l = lambda: (-4, 'c', 0) # you might think you don't need the parentheses, but you do
返回元组的 lambda。
然后执行iter(l())。
