+ 3
Appending Lists, why is the output the way it is?
Consider this code: a, b = [0], [1] a.append(b) b.append(a) print(a) print(b) # I expected an output like [0, [1]] # [1, [0, [1]]] # but it rather becomes an infinite list, can # someone explain please?
3 Answers
+ 11
đčBecause you've appended a pointer to that list, so when b changes the pointer sees the change. Same thing when a changes.
In your case result become infinite list...
đ a.append(b) —ïž
a is now [original_list_object_a,original_list_object_b].
So, when you change b, you change what a refers to.
...
đčIf you want to create a copy and therefore point to a different object, you can use next:
a, b = [0], [1]
a.append(b[:])
b.append(a[:])
print(a)
print(b)
+ 8
@Khushal
Exactly! đ
You're welcome đ
+ 2
Oh I think i get it somewhat, when we append b to a we are not appending the value of b but actually appending it's "address's value" so whenever b changes a changes too and this how it becomes an Infinite list. Thanks Lukar ToDo ! :)