I met this in a python script list[:, 1] and I am trying to figure out the role of the comma.
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.
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 for further examples.
来源:https://stackoverflow.com/questions/21165751/what-does-a-colon-and-comma-stand-in-a-python-list