如何用Python3原生方法实现列表中相邻元素n-n+1的循环计算?
解决方案:计算列表相邻元素差值(当前元素 - 下一个元素)
错误原因分析
你写的列表推导式[n-(n+1) for n in list]逻辑错误:这里的n是列表中的单个元素,n+1是元素值加1,不是下一个位置的元素,所以每个结果都是元素-元素-1=-1.0,完全不符合需求。
原生Python3解决方案
方法1:索引遍历的列表推导式
直接通过索引访问当前元素和下一个元素,遍历到倒数第二个元素即可避免索引越界:
original_list = [26.5, 17.3, 5.9, 10.34, 3.87] list_2 = [original_list[i] - original_list[i+1] for i in range(len(original_list)-1)] # 输出:[9.2, 11.4, -4.44, 6.47]
方法2:使用zip函数配对元素
利用zip将原列表与它的切片(从第二个元素开始)配对,再计算每对的差值,写法更简洁:
original_list = [26.5, 17.3, 5.9, 10.34, 3.87] list_2 = [a - b for a, b in zip(original_list, original_list[1:])] # 输出:[9.2, 11.4, -4.44, 6.47]
方法3:普通for循环写法
如果习惯用显式循环,初始化空列表后逐个计算差值追加,注意循环范围:
original_list = [26.5, 17.3, 5.9, 10.34, 3.87] list_2 = [] for i in range(len(original_list)-1): diff = original_list[i] - original_list[i+1] list_2.append(diff) # 输出:[9.2, 11.4, -4.44, 6.47]
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

