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

如何基于DataFrame中列表相邻元素值添加元素?解决索引越界问题

解决列表遍历索引越界问题并生成目标列表

给定列表:

oddnum = [1, 3, 5, 7, 9, 11, 23]

需要生成目标列表:

newlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 23]

规则如下:

  • 若相邻元素差值为2,在两者之间插入当前元素+1
  • 若差值大于2,保留原元素

你遇到的索引越界错误,是因为遍历到列表最后一个元素时,index+1超出了列表的最大索引范围。以下是两种可行的解决方法:

方法一:控制遍历范围到倒数第二个元素

oddnum = [1, 3, 5, 7, 9, 11, 23]
newlist = []

# 遍历索引从0到倒数第二个元素(len(oddnum)-2)
for i in range(len(oddnum) - 1):
    current = oddnum[i]
    next_num = oddnum[i+1]
    # 先加入当前元素
    newlist.append(current)
    # 判断是否需要插入中间数
    if next_num - current == 2:
        newlist.append(current + 1)
# 最后单独加入列表的最后一个元素
newlist.append(oddnum[-1])

print(newlist)

逻辑说明:

  • 遍历范围设为range(len(oddnum)-1),确保i+1始终是有效的列表索引
  • 每一步先将当前元素加入新列表,再根据差值判断是否插入中间数
  • 最后手动添加最后一个元素,避免遗漏

方法二:用zip配对相邻元素

oddnum = [1, 3, 5, 7, 9, 11, 23]
newlist = []

# zip会将原列表和原列表切片(从第二个元素开始)配对
for current, next_num in zip(oddnum, oddnum[1:]):
    newlist.append(current)
    if next_num - current == 2:
        newlist.append(current + 1)
# 加入最后一个元素
newlist.append(oddnum[-1])

print(newlist)

逻辑说明:

  • oddnum[1:]是原列表去掉第一个元素后的新列表,和原列表zip后,会自动生成(oddnum[0], oddnum[1]), (oddnum[1], oddnum[2]), ..., (oddnum[-2], oddnum[-1])的配对
  • 这种方式不需要手动处理索引,从根源上避免了索引越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:55:16