我在python脚本list[:, 1]
中遇到了这个,我试图找出逗号的作用。
答案 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]]