Step 1: List creation
lst = [1, 2, 3]
A list with three integers.
Step 2: Loop starts
for i in lst:
The loop runs 3 times:
-
1st time → i = 1
-
2nd time → i = 2
-
3rd time → i = 3
Step 3: The tricky part
if i is 2:
Here:
is checks identity (memory location)
== checks value
So this line means:
“Is i pointing to the exact same object in memory as 2?”
Why does it print "Two"?
Python caches small integers from -5 to 256.
So every time you write 2, Python uses the same memory object.
That means:
i is 2 → True
So it prints:
Two
Important Interview Rule ⚠️
This works by accident, not by design.
Correct way:
if i == 2:
Because:
== → always reliable
is → only for None, True, False
Memory proof (advanced)
print(id(2))print(id(i))
Both IDs are same → same object.
Final takeaway for your students (CLCODING):
Never use is for number or string comparison.
Use it only for None or singleton objects.
This question is famous in Python interviews because it tests real understanding, not syntax


0 Comments:
Post a Comment