Python切片操作为什么就不包含最后一个值
发布网友
发布时间:2022-04-18 01:17
我来回答
共2个回答
热心网友
时间:2022-04-18 02:47
其他语言很多都类似,一个范围,基本都是前包,后不包,
比如java
String str = "ABC+-DEF";
String str2 = str.substring(3,5));//想取得+-.就得从3~5,索引包括3,不包括5
System.out.println(str2);//输出+-
python也一样
s1 = "ABC+-DEF"
s2 = s1[3:5]
print s2 # +-
为了便于理解,可以这样想. 3:5 其实就是3:(3+2) 从3开始,要取2个字符,所以就是3+2=5
热心网友
时间:2022-04-18 04:05
这个问题我也思考过,为什么要这么设计?
我分析起来很简单,如果我们在做一个集合的连续切片的操作,如果“包前”又“包后”的话,对于下一次切片的起始值就会存在一次计算,因为最后一项已经包含在上一次切片操作的结果内,所以我们要动态的计算下一次的起始位置加1,要不然就会造成重复切片。
如果不“包后的话”,上一次的结束的索引直接作为下一次的起始位置进行切片,这样的话,在对数据进行大量的操作时,会减少巨大的计算操作,从而节省性能;