Python数组负索引切片为何无法显示最后一个元素?
解决Python数组切片从末尾逐步缩减时首项为空的问题
你的代码里,第一次循环i=0时,-i等于0,Python切片arr[-(len(arr)):-i]就变成了arr[-7:0]。由于步长默认是正的,结束索引0小于起始索引-7,所以返回空数组,这就是首项缺失的原因。
修复方案1:调整切片逻辑
def find_even_index(arr): for i in range(len(arr)): # 当i=0时用None替代0,让切片延伸到数组末尾 print(arr[-(len(arr)): -i if i != 0 else None]) find_even_index([1,2,3,4,3,2,1])
修复方案2:用正向切片更直观
def find_even_index(arr): for i in range(len(arr)): # 取前 len(arr)-i 个元素,对应从完整数组逐步缩减 print(arr[: len(arr)-i]) find_even_index([1,2,3,4,3,2,1])
运行任意一个修复后的代码,都会输出预期结果:
[1, 2, 3, 4, 3, 2, 1] [1, 2, 3, 4, 3, 2] [1, 2, 3, 4, 3] [1, 2, 3, 4] [1, 2, 3] [1, 2] [1]
内容的提问来源于stack exchange,提问作者juangalicia
相关产品推荐
相关产品推荐

