What does a colon and comma stand in a python list?
Solution 1:
Generally speaking:
foo[somestuff]
calls either __getitem__
, or __setitem__
. (there's also __getslice__
and __setslice__
, but those are now deprecated, so let's not talk about that). Now, if somestuff
has a comma in it, python will pass a tuple
to the underlying function:
foo[1,2] # passes a tuple
If there is a :
, python will pass a slice:
foo[:] # passes `slice(None, None, None)`
foo[1:2] # passes `slice(1, 2, None)`
foo[1:2:3] # passes `slice(1, 2, 3)
foo[1::3] # passes `slice(1, None, 3)
Hopefully you get the idea. Now if there is a comma and a colon, python will pass a tuple which contains a slice. in your example:
foo[:, 1] # passes the tuple `(slice(None, None, None), 1)`
What the object (foo
) does with the input is entirely up to the object.
Solution 2:
Lets assume list
is a 2D (numpy) array as follows:
[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]]
list[1,1] # --> 5
It says select the element in position [1,1] (note that indexes start from zero)
list[:,1] # --> [2,5,8]
list[1][1] # --> 5
list[:][1] # --> [4 5 6]
See this and this for further examples.
Solution 3:
In a sense the comma separates the different dimensions of your array that you are trying to select from.
Lets say I have a 2D array
my_array = numpy.array([[1,2,3],
[4,5,6],
[7,8,9]])
I could select rows(0 and 1) and columns(1 and 2) by doing this:
# rows | cols
print(my_array[0:2, 1:3]) # prints [[2 3]
[5 6]]