Python实现summer_69数组求和 列表切片索引加1原因咨询
关于summer_69实现中9的索引加1的原因
核心原因和Python列表的切片规则直接相关:
- Python 列表的切片语法
arr[start:end]遵循左闭右开的取值逻辑:只会包含索引等于start的元素,到索引小于end的元素为止,不会取到索引等于end的元素。
我们可以用你给出的示例验证这个逻辑:
以输入[4, 5, 6, 7, 8, 9]为例:
arr.index(6)的返回值是2(元素6对应的数组下标),arr.index(9)的返回值是5(元素9对应的数组下标)- 如果切片写为
arr[2:5],实际取到的元素是[6,7,8],漏掉了需要排除的9,扣除的总和会少算9,最终结果就不符合要求 - 给9的索引加1后,切片变为
arr[2:6],取到的元素是[6,7,8,9],刚好覆盖所有需要忽略的区间,扣除这部分的和之后得到的结果就和示例一致。
补充说明:你找到的这段代码存在两个小问题,仅作参考:一是判断条件
if 6 and 9 in arr的实际执行逻辑是「6为真(永远成立)且9在数组中」,如果数组只有9没有6,调用arr.index(6)会直接报错;二是sum的参数少了一个右闭合括号,实际运行需要补上才能正常执行。
内容的提问来源于stack exchange,提问作者Jurandir Gouveia
相关产品推荐
相关产品推荐

