Let exp = [1,2,3,4,5]
If I then execute x in exp
, it will give me False
. But if I execute :
for x in exp:
if x==3:
print('True')
Then execute x in exp
, it returns True
. What's happening here? I didn't assign anything to x. Did I? I am really confused.
**EDIT:**Sorry if I didn't say this before: x
is not defined before.
Thank you everyone. I understand it now. the elements of exp
is assigned to x
as exp
is iterated over. And x in exp
equals True
in the last line of code because the last element has been assigned to x
.
Seems like you stumbled about in
being somewhat overloaded in Python.
x in exp
, you are asking "Is x
in exp
?"for x in exp: ...
, you tell Python "For each element in exp
, call it x
and do ..."The latter will assign each of the values in exp
to x
, one after the other, and execute the body of the loop with that value, so in the first iteration x
is assigned 1
, in the second 2
, and in the last 5
. Also, x
keeps this value after the loop!
Thus, before the loop, assuming that the variable x
is defined but has some other value, x in exp
will return False
, and after the loop, it returns True
, because x
is still assigned the last value from exp
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With