冒号和逗号在python列表中的含义是什么?

时间:2014-01-16 15:20:43

标签: python numpy

我在python脚本list[:, 1]中遇到了这个,我试图找出逗号的作用。

3 个答案:

答案 0 :(得分:25)

一般来说:

foo[somestuff]

调用__getitem____setitem__。 (还有__getslice____setslice__,但现在已经弃用了,所以我们不要谈论这个问题。现在,如果somestuff中有逗号,python会将tuple传递给基础函数:

foo[1,2]  # passes a tuple

如果有:,python将传递一个切片:

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)

希望你明白了。现在如果有逗号和冒号,python将传递一个包含切片的元组。在你的例子中:

foo[:, 1]  # passes the tuple `(slice(None, None, None), 1)`

对象(foo)对输入的作用完全取决于对象。

答案 1 :(得分:12)

让我们假设list是一个2D(numpy)数组,如下所示:

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

有关更多示例,请参阅this

答案 2 :(得分:1)

从某种意义上说,逗号分隔了您要选择的数组的不同维度。

让我们说我有一个二维数组

my_array = numpy.array([[1,2,3],
                        [4,5,6],
                        [7,8,9]])

我可以这样选择行(0和1)和列(1和2):

#             rows | cols
print(my_array[0:2, 1:3]) # prints [[2 3]
                                    [5 6]]