Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does a colon and comma stand in a python list?

Tags:

python

numpy

I met this in a python script list[:, 1] and I am trying to figure out the role of the comma.

like image 409
andgeo Avatar asked Jan 16 '14 15:01

andgeo


People also ask

What Does a colon in a list mean in Python?

A colon on the right side of an index means everything after the specified index.

What is the :: in Python?

Python uses the :: to separate the End, the Start, and the Step value.

What is :: double colon in Python?

Answer: The double colon is a special case in Python's extended slicing feature. The extended slicing notation string[start:stop:step] uses three arguments start , stop , and step to carve out a subsequence. It accesses every step -th element between indices start (included) and stop (excluded).

Do lists need commas in Python?

It's a common syntactical convention to allow trailing commas in an array, languages like C and Java allow it, and Python seems to have adopted this convention for its list data structure.


2 Answers

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.

like image 151
mgilson Avatar answered Sep 22 '22 00:09

mgilson


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.

like image 39
qartal Avatar answered Sep 21 '22 00:09

qartal