【发布时间】:2014-08-18 01:46:25
【问题描述】:
我有这个:
>>> 1 in (i for i in range(0, 5))
True
>>> 2 in (i for i in range(0, 5))
True
之后:
>>> gen = (i for i in range(0, 5))
>>> 1 in gen
True
>>> 3 in gen
True
>>> 2 in gen
False
keywordin 的工作方式类似于:
3 in gen
等于:
j = 3
for i in gen:
if i == j:
return True
else:
return False
但是在for循环之后,不要再次将迭代器重置为第一个。
对吗?
【问题讨论】:
-
当我在 python 2.7 和 python 3 中运行你的第二个示例时,我得到一个
NameError: Name 'i' is not defined。你确定你没有在解释器会话的早些时候定义 i 吗? -
@happydave 我的错,我之前确实看到了那个结果,但是刚才,我测试了代码,我得到了你的结果。也许我在那次测试中写了
i。现在更正它。
标签: python iterator in-operator