【发布时间】:2014-10-23 18:52:34
【问题描述】:
让exp = [1,2,3,4,5]
如果我然后执行x in exp,它将给我False。但如果我执行:
for x in exp:
if x==3:
print('True')
然后执行x in exp,返回True。这里发生了什么事?我没有给 x 分配任何东西。我有吗?我真的很困惑。
**编辑:**对不起,如果我之前没有这么说:x 之前没有定义。
回答
谢谢大家。我现在明白了。 exp 的元素被分配给 x,因为 exp 被迭代。并且x in exp 等于最后一行代码中的True,因为最后一个元素已分配给x。
【问题讨论】:
-
如果你先执行
x in exp,它会给你一个NameError,而不是False。 -
这段代码没有返回任何东西
-
答案一定是:
x被绑定到一个以前不在exp中的值。但是,在运行for循环之前,您没有告诉我们x的状态。 -
对于那些投票结束的人:这里有一个非常明确的问题(恕我直言)关于循环是否进行分配。我认为这不一定需要关闭。
-
同意 Amber。这不是一个写得很完美的问题(第二句话中的红鲱鱼肯定没有帮助),但这里有一个真正的问题。除非是 dup,否则我认为没有任何理由关闭它。
标签: python for-loop sequence contains membership