在python列表中冒号和逗号代表什么?

在python列表中冒号和逗号代表什么?,python,numpy,Python,Numpy,我在一个python脚本列表[:,1]中遇到了这个问题,我正在试图找出逗号的作用。一般来说: foo[somestuff] 调用\uuuuu getitem\uuuuu或\uuuuuu setitem\uuuuu。(还有\uuu getslice\uuu和\uuu setslice\uuu,但现在它们已经被弃用了,所以我们不要再讨论它们了)。现在,如果somestuff中有一个逗号,python将向底层函数传递一个tuple: foo[1,2] # passes a tuple 如果有一个

我在一个python脚本
列表[:,1]
中遇到了这个问题,我正在试图找出逗号的作用。

一般来说:

foo[somestuff]
调用
\uuuuu getitem\uuuuu
\uuuuuu setitem\uuuuu
。(还有
\uuu getslice\uuu
\uuu setslice\uuu
,但现在它们已经被弃用了,所以我们不要再讨论它们了)。现在,如果
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
)对输入的作用完全取决于对象。

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

[[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9]]
它表示在[1,1]位置选择元素(注意索引从零开始)


有关更多示例,请参见和。

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

假设我有一个2D数组

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

这是一个简单的语法。具体来说,该命令正在访问数据结构的两个不同维度(行和列)。该语法将引发
类型错误:列表索引必须是整数,而不是元组,因此我确定该对象不是常规的Python列表。嗯,您询问列表,但它上面有numpy标记,而且您的语法只适用于numpy数组而不是列表。我想你不明白numpy数组和python列表之间的区别,因此你的问题是?@usethedeathstar Ashwini在假设这是一个numpy数组的基础上添加了numpy标记。多么棒的老板解释:D我刚刚读了PEP8,我已经达到了令人讨厌的部分,其中说在切片中,冒号:充当一个二进制运算符,因此我立即在谷歌上搜索了更多内容并登陆此处,现在我看到了[]订阅方法如何在有多个对象时在数字之间创建一个带有冒号的切片。。
my_array = numpy.array([[1,2,3],
                        [4,5,6],
                        [7,8,9]])
#             rows | cols
print(my_array[0:2, 1:3]) # prints [[2 3]
                                    [5 6]]