
如果第一个冒号前没有,是默认从0开始吗,还有就是B从零开始,到9结束吗,步长为4,为什么输出不是2019
首先我们来看看A和D为什么是对的:
本题是关于字符串切片操作, 语法是[start:end:step]。
- 通常step默认为1,并且可省略。所以[0:4] 和[0:4:1]是一个意思。
- start也可以省略,但是如果省略,表示从0开始,所以[0:4]和[:4]是一个意思。
- end也可以省略,但是如果省略,表示是到最后一个字符才结束。
很明显AD能够取出2019
其实切片的最简形式是[::], 这个切片会返回字符串或者列表本身。所以意义不大。但是这表明切片至少需要有两个:组成。
其次我们来看看BCE为什么是错的:
- C, sno[4]里面不带":",是一个寻常的按照索引取值,表示取出sno中索引值为4的字符(注意索引值从0开始),输出是‘0’
- B, sno[0:4:4]表示从索引0开始,到索引4结束,按照步长4取值。第一次,从0开始,取出索引值为0的字符,然后索引为0+4,但是到4就结束了,所以输出仅仅是"2"
- E, sno[1:5], 从索引1开始,到索引5结束,步长为1,那取(5-1)次,依次取出“0190”
sno[0:4:4] 是切片操作,格式为[start:stop:step]。本例中,从索引0开始,每隔4个字符取一个字符,因此只能取到一个'2'
sno[4]: 是索引操作,返回索引位置为 4 的字符'0'
sno[0:4]: 是个切片操作,格式为[start:stop]。本例中,从索引0开始,到索引4(不包含4本身)的所有字符,返回'2019',D能取到。