Python - List returning [[…], 6] [duplicate]
This question already has an answer here:
What do ellipsis […] mean in a list?
6 answers
If I run the following code
data = [[1,2],[3,4],[5,6]]
for x in data:
print(x[0])
for x[0] in data:
print(x)
I get the following output
1
3
5
[[1, 2], 6]
[[3, 4], 6]
[[...], 6]
I end up with a list containing [[...], 6]
, but what is this [...]
list?
It doesn't behave normally, because calling y = [[...], 6]
and then the following statements show [...]
to be 0
>>> print(y)
[[Ellipsis], 6]
>>> print(y[0])
[0]
However when I run the code at the top, and type the following statements the results don't make sense:
>>> print(x)
[[...], 6]
>>> print(x[0])
[[...], 6]
>>> print(x[0][0])
[[...], 6]
>>> print(x[0][0][0])
[[...], 6]
and yet somehow both of these result in 6
>>> print(x[1])
6
>>> print(x[0][1])
6
To review the question: How is this possible, and what does [...]
represent, and how can the for loop at the top create such a list?
python python-3.x
marked as duplicate by Azat Ibrakov, jpp
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Jan 17 at 12:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
What do ellipsis […] mean in a list?
6 answers
If I run the following code
data = [[1,2],[3,4],[5,6]]
for x in data:
print(x[0])
for x[0] in data:
print(x)
I get the following output
1
3
5
[[1, 2], 6]
[[3, 4], 6]
[[...], 6]
I end up with a list containing [[...], 6]
, but what is this [...]
list?
It doesn't behave normally, because calling y = [[...], 6]
and then the following statements show [...]
to be 0
>>> print(y)
[[Ellipsis], 6]
>>> print(y[0])
[0]
However when I run the code at the top, and type the following statements the results don't make sense:
>>> print(x)
[[...], 6]
>>> print(x[0])
[[...], 6]
>>> print(x[0][0])
[[...], 6]
>>> print(x[0][0][0])
[[...], 6]
and yet somehow both of these result in 6
>>> print(x[1])
6
>>> print(x[0][1])
6
To review the question: How is this possible, and what does [...]
represent, and how can the for loop at the top create such a list?
python python-3.x
marked as duplicate by Azat Ibrakov, jpp
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Jan 17 at 12:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
3
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Because each step of the loop assigns the next element fromx
tox[0]
. Those two loops are not the same.
– jonrsharpe
Jan 6 at 15:38
add a comment |
This question already has an answer here:
What do ellipsis […] mean in a list?
6 answers
If I run the following code
data = [[1,2],[3,4],[5,6]]
for x in data:
print(x[0])
for x[0] in data:
print(x)
I get the following output
1
3
5
[[1, 2], 6]
[[3, 4], 6]
[[...], 6]
I end up with a list containing [[...], 6]
, but what is this [...]
list?
It doesn't behave normally, because calling y = [[...], 6]
and then the following statements show [...]
to be 0
>>> print(y)
[[Ellipsis], 6]
>>> print(y[0])
[0]
However when I run the code at the top, and type the following statements the results don't make sense:
>>> print(x)
[[...], 6]
>>> print(x[0])
[[...], 6]
>>> print(x[0][0])
[[...], 6]
>>> print(x[0][0][0])
[[...], 6]
and yet somehow both of these result in 6
>>> print(x[1])
6
>>> print(x[0][1])
6
To review the question: How is this possible, and what does [...]
represent, and how can the for loop at the top create such a list?
python python-3.x
This question already has an answer here:
What do ellipsis […] mean in a list?
6 answers
If I run the following code
data = [[1,2],[3,4],[5,6]]
for x in data:
print(x[0])
for x[0] in data:
print(x)
I get the following output
1
3
5
[[1, 2], 6]
[[3, 4], 6]
[[...], 6]
I end up with a list containing [[...], 6]
, but what is this [...]
list?
It doesn't behave normally, because calling y = [[...], 6]
and then the following statements show [...]
to be 0
>>> print(y)
[[Ellipsis], 6]
>>> print(y[0])
[0]
However when I run the code at the top, and type the following statements the results don't make sense:
>>> print(x)
[[...], 6]
>>> print(x[0])
[[...], 6]
>>> print(x[0][0])
[[...], 6]
>>> print(x[0][0][0])
[[...], 6]
and yet somehow both of these result in 6
>>> print(x[1])
6
>>> print(x[0][1])
6
To review the question: How is this possible, and what does [...]
represent, and how can the for loop at the top create such a list?
This question already has an answer here:
What do ellipsis […] mean in a list?
6 answers
python python-3.x
python python-3.x
edited Jan 8 at 13:48
Mad Physicist
38.2k1678110
38.2k1678110
asked Jan 6 at 15:33
Ruler Of The WorldRuler Of The World
551323
551323
marked as duplicate by Azat Ibrakov, jpp
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Jan 17 at 12:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Azat Ibrakov, jpp
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Jan 17 at 12:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
3
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Because each step of the loop assigns the next element fromx
tox[0]
. Those two loops are not the same.
– jonrsharpe
Jan 6 at 15:38
add a comment |
3
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Because each step of the loop assigns the next element fromx
tox[0]
. Those two loops are not the same.
– jonrsharpe
Jan 6 at 15:38
3
3
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Because each step of the loop assigns the next element from
x
to x[0]
. Those two loops are not the same.– jonrsharpe
Jan 6 at 15:38
Because each step of the loop assigns the next element from
x
to x[0]
. Those two loops are not the same.– jonrsharpe
Jan 6 at 15:38
add a comment |
2 Answers
2
active
oldest
votes
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 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...
add a comment |
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[:]
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.
– Jean-François Fabre♦
Jan 6 at 15:44
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...
add a comment |
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 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...
add a comment |
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 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...
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 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
...
answered Jan 6 at 15:42
Mad PhysicistMad Physicist
38.2k1678110
38.2k1678110
add a comment |
add a comment |
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[:]
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.
– Jean-François Fabre♦
Jan 6 at 15:44
add a comment |
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[:]
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.
– Jean-François Fabre♦
Jan 6 at 15:44
add a comment |
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[:]
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[:]
edited Jan 6 at 15:49
answered Jan 6 at 15:37
Jean-François Fabre♦Jean-François Fabre
106k1057115
106k1057115
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.
– Jean-François Fabre♦
Jan 6 at 15:44
add a comment |
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.
– Jean-François Fabre♦
Jan 6 at 15:44
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
Great answer, so the […] represents an infinite loop of the same list?
– Ruler Of The World
Jan 6 at 15:38
...
is the way to represent something that cycles.– Jean-François Fabre♦
Jan 6 at 15:44
...
is the way to represent something that cycles.– Jean-François Fabre♦
Jan 6 at 15:44
add a comment |
3
Did you do any research? stackoverflow.com/questions/17160162/…
– jonrsharpe
Jan 6 at 15:34
Strangely I couldn't find that question from my searches, it seems to answer the question perfectly. The only question that remains unanswered is how does the for loop create such a list? @jonrsharpe
– Ruler Of The World
Jan 6 at 15:37
Because each step of the loop assigns the next element from
x
tox[0]
. Those two loops are not the same.– jonrsharpe
Jan 6 at 15:38