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]]