Python如何比较数组adjacent元素且避免列表索引越界错误
如何比较数组中的两个
adjacent(相邻)元素,同时不会触发索引越界错误? 你给出的原始代码报错是因为遍历到最后一个索引时,i+1超出了数组的下标范围,以下是几种不需要调整遍历范围为len(n)-1、同时可正常访问最后一个元素的实现方案:
方案1:遍历中加边界判断
在执行相邻元素比较前,先判断当前下标是否为最后一位,仅非最后一位时执行比较,最后一位可单独处理你的业务逻辑:
def count(n): # 先处理空输入的边界场景 if not n: print(0, None) return counter = 1 for i in range(len(n)): # 仅非最后一位时执行相邻比较 if i < len(n) - 1 and n[i] == n[i+1]: counter += 1 # 遍历结束后i就是最后一位下标,可直接访问 print(counter, n[i])
方案2:用zip配对相邻元素(更简洁的无索引写法)
直接用zip将原数组和偏移一位的数组配对,自动生成所有相邻元素对,不需要手动管理索引,最后一位元素可单独取值处理:
def count(n): if not n: print(0, None) return counter = 1 # zip会自动截断到较短的序列长度,不会产生越界 for curr, next_val in zip(n, n[1:]): if curr == next_val: counter += 1 # 直接取最后一位元素即可 print(counter, n[-1])
内容的提问来源于stack exchange,提问作者Ruf
相关产品推荐
相关产品推荐

