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

如何用for循环/列表推导式及DataFrame实现列表元素递差计算

实现方法

一、纯列表场景实现

方法1:enumerate遍历实现

通过enumerate获取元素索引,索引为0时直接保留原数,其他位置用当前元素减去前一位元素:

list1 = [3, 4, 6, 8, 13]
list2 = []
for idx, num in enumerate(list1):
    if idx == 0:
        list2.append(num)
    else:
        list2.append(num - list1[idx-1])
print(list2)  # 输出: [3, 1, 2, 2, 5]

方法2:列表推导式实现

用zip将原列表与“原列表去掉首元素”的序列配对,再拼接首元素完成计算:

list1 = [3, 4, 6, 8, 13]
list2 = [list1[0]] + [curr - prev for curr, prev in zip(list1[1:], list1[:-1])]
print(list2)  # 输出: [3, 1, 2, 2, 5]

二、DataFrame场景实现

利用pandas的diff()方法直接计算相邻元素差值,首元素会生成NaN,用fillna()替换为原列的首值即可:

import pandas as pd

df = pd.DataFrame({'list1': [3, 4, 6, 8, 13]})
df['list2'] = df['list1'].diff().fillna(df['list1'].iloc[0])
# 若需要整数类型,可追加类型转换:
df['list2'] = df['list2'].astype(int)
print(df)

执行后输出结果:

list1  list2
0      3      3
1      4      1
2      6      2
3      8      2
4     13      5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:30:50