Python:单冒号与双冒号

Nik*_*Nik 9 python numpy colon slice

在这种情况下,单结肠和双结肠有什么区别? data[0:,4]VSdata[0::,4]

women_only_stats = data[0::,4] == "female" 

men_only_stats = data[0::,4] != "female"   
Run Code Online (Sandbox Code Playgroud)

我试图替换data[0::,4],data[0:,4]我看到没有区别.这个或另一个案件有什么不同吗?

data 是具有行的二维数组 ['1' '0' '3' 'Braund, Mr. Owen Harris' 'male' '22' '1' '0' 'A/5 21171' '7.25' '' 'S']

Joh*_*ing 10

,没有区别.

请参阅切片的Python文档:

来自文档: a[start:stop:step]

start和step参数默认为None.切片对象具有只读数据属性start,stop和step,它们只返回参数值(或它们的默认值).

在这种情况下,您将包含一个空step参数.

>>> a = [1,2,3,4]
>>> a[2:]
[3,4]
>>> a[2::]
[3,4]
>>> a[2:] == a[2::]
True
Run Code Online (Sandbox Code Playgroud)

并了解step参数实际执行的操作:

>>> b = [1,2,3,4,5,6,7,8,9,10]
>>> b[0::5]
[1, 6]
>>> b[1::5]
[2, 7]
Run Code Online (Sandbox Code Playgroud)

因此,通过将其隐式None(即,通过任一a[2:]a[2::]),您不会以任何方式更改代码的输出.

希望这可以帮助.