You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现列表相邻元素差值计算?以[4,7,11,15]为例

问题描述

我想编写一个函数遍历列表元素,依次计算list[1]-list[0]、list[2]-list[1]……直至列表末尾的差值,期望输出list_diff = [3, 4, 4]。示例列表如下:

my_list = [4, 7, 11, 15]

我尝试了两种写法但未完成,想了解是否有更优的实现方式,尝试的代码片段:

def difference(list):
    for items in list():

# 或者

def difference(list):
    list_diff.append(list[1] - list[0])
    list_diff.append(list[2] - list[1])
# 以此类推...
最优实现方式

下面提供几种简洁高效的Python实现方案:

1. 基础循环实现(直观易懂)

这种方式逻辑清晰,适合新手理解,通过索引遍历计算相邻元素差值:

def calculate_diff(my_list):
    list_diff = []
    # 遍历到倒数第二个元素即可,避免索引越界
    for i in range(len(my_list) - 1):
        diff = my_list[i+1] - my_list[i]
        list_diff.append(diff)
    return list_diff

# 测试
my_list = [4, 7, 11, 15]
print(calculate_diff(my_list))  # 输出: [3, 4, 4]

注意:不要用list作为参数名,它是Python内置类型,会覆盖内置函数导致异常。

2. 列表推导式(简洁优雅)

用列表推导式可以一行完成逻辑,代码紧凑可读性强:

def calculate_diff(my_list):
    return [my_list[i+1] - my_list[i] for i in range(len(my_list)-1)]

# 测试
my_list = [4, 7, 11, 15]
print(calculate_diff(my_list))  # 输出: [3, 4, 4]

3. 使用zip函数(Pythonic风格)

利用zip函数将原列表与它的切片(从索引1开始)配对,是Python中更惯用的写法:

def calculate_diff(my_list):
    return [b - a for a, b in zip(my_list, my_list[1:])]

# 测试
my_list = [4, 7, 11, 15]
print(calculate_diff(my_list))  # 输出: [3, 4, 4]

这里zip(my_list, my_list[1:])会生成(4,7)、(7,11)、(11,15)这样的元组,遍历每个元组即可计算出相邻元素的差值。

内容的提问来源于stack exchange,提问作者meow11213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:21:07