Python:单冒号与双冒号
在这种情况下,单冒号和双冒号有什么区别?Python:单冒号与双冒号,python,numpy,slice,colon,Python,Numpy,Slice,Colon,在这种情况下,单冒号和双冒号有什么区别? 数据[0:,4]vs数据[0::,4] women_only_stats = data[0::,4] == "female" men_only_stats = data[0::,4] != "female" 我试图用数据[0:,4]替换数据[0:,4],我看不出有什么不同。这种情况和另一种情况有什么不同吗 数据是一个二维数组,其行类似于['1''0''3''Braund,Owen Harris先生''男性''22''1''0''A/5 211
数据[0:,4]
vs数据[0::,4]
women_only_stats = data[0::,4] == "female"
men_only_stats = data[0::,4] != "female"
我试图用数据[0:,4]
替换数据[0:,4]
,我看不出有什么不同。这种情况和另一种情况有什么不同吗
数据
是一个二维数组,其行类似于['1''0''3''Braund,Owen Harris先生''男性''22''1''0''A/5 21171''7.25''S']
没有区别。您正在使用相同的切片
对象进行索引。否,没有区别
有关以下内容,请参阅Python文档:
从文档:a[开始:停止:步骤]
开始参数和步骤参数默认为无。切片对象具有
只读数据属性start、stop和step仅返回
参数值(或其默认值)
在这种情况下,您将包括一个空的步骤
参数
>>> a = [1,2,3,4]
>>> a[2:]
[3,4]
>>> a[2::]
[3,4]
>>> a[2:] == a[2::]
True
要了解步骤
参数的实际作用:
>>> b = [1,2,3,4,5,6,7,8,9,10]
>>> b[0::5]
[1, 6]
>>> b[1::5]
[2, 7]
因此,通过将其隐式设置为None
(即a[2://code>或a[2::]
),您不会以任何方式更改代码的输出
希望这有帮助。两种语法产生相同的索引
class Foo(object):
def __getitem__(self, idx):
print(idx)
Foo()[1::,6]
# prints (slice(1, None, None), 6)
Foo()[1:,6]
# prints (slice(1, None, None), 6)
基本上,1::,6
是一个切片(1::
)和一个数字(6
)的元组。切片的形式为开始:停止[:跨步]
。将跨步留空(1::
)或不说明跨步(1:
)是等效的
s[开始:结束:步骤]
。
用步骤从开始到结束切片。在您的案例中,数据是
data = ['1' '0' '3' 'Braund, Mr. Owen Harris' 'male' '22' '1' '0' 'A/5 21171' '7.25' '' 'S']
所以它等于
data = ['103Br.............7.25S']
在这种情况下,列表中只有一项,所以数据[0::4]或数据[0:4]不会影响任何事情
如果你试着这样做,你的问题/答案就会清楚
print data[0][0::4]
print data[0][0:4]
它就像
data[start:end:step]
因此,如果您的步长小于数据长度,它的行为与通常一样