Python - List returning [[...], 6]
that's because you're using x[0]
as your loop variable (which is bad practice) which exists as a list and not a new name like you're supposed to when iterating with for
for x[0] in data:
print(x)
and x
is in data
so there's a cyclic reference (hence the ellipsis representation to avoid infinite recursion when printing the same data over and over)
More in detail:
The ellipsis happens on the last element because of the previous loop that binds x
on the last element of data
([5,6]
).
So the second loop assigns [5,6]
to x[0]
but it's also x
. On way to get rid of this is to create a copy of x
just before the second loop: x = x[:]
Let's give your sublists names:
a = [1, 2]
b = [3, 4]
c = [5, 6]
data = [a, b, c]
Your first loop binds a
, b
and c
successively to x
. When the loop terminates, you have effectively set x = c
.
The second loop now binds a
, b
and c
successively to x[0]
. This is fine for a
and b
, but for c
you are effectively doing c[0] = c
, creating a circular reference. Since list
is able to catch that, it won't try to print [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...