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

如何统计嵌套列表中各子列表的中间局部极大值数量?

解决嵌套列表的峰值元素统计问题

我来帮你搞定这个需求,咱们先理清楚问题,再一步步实现解决方案:

问题明确

我们需要处理一个数值型嵌套列表,对每个子列表,统计其中满足以下两个条件的元素数量:

  1. 元素同时存在左右相邻元素(也就是不能是子列表的首尾元素)
  2. 该元素大于它的左右两个邻居

比如给定输入[[1,2,3],[3,2,1],[3,1,2],[2,3,1]],输出就是[0,0,0,1]——前三个子列表要么没有中间元素,要么中间元素不满足大于左右的条件,只有第四个子列表里的3符合要求。

解决思路

  1. 遍历嵌套列表中的每一个子列表
  2. 对每个子列表,先判断长度:如果长度小于3,直接计数0(因为没有同时有左右邻居的元素)
  3. 对于长度≥3的子列表,只需要检查中间的元素(索引从1到len(sublist)-2的位置)
  4. 对每个中间元素,判断是否同时大于左边和右边的元素,满足则计数加1
  5. 把每个子列表的统计结果收集起来,组成最终的结果列表

代码实现(Python)

def count_peak_elements(nested_list):
    peak_counts = []
    for sublist in nested_list:
        count = 0
        # 子列表长度不足3,没有符合条件的元素
        if len(sublist) < 3:
            peak_counts.append(count)
            continue
        # 遍历所有中间元素(排除首尾)
        for idx in range(1, len(sublist) - 1):
            current = sublist[idx]
            left_neighbor = sublist[idx - 1]
            right_neighbor = sublist[idx + 1]
            if current > left_neighbor and current > right_neighbor:
                count += 1
        peak_counts.append(count)
    return peak_counts

# 测试示例输入
sample_input = [[1,2,3],[3,2,1],[3,1,2],[2,3,1]]
print(count_peak_elements(sample_input))  # 输出: [0, 0, 0, 1]

代码说明

  • 函数count_peak_elements接收嵌套列表作为输入,初始化空列表peak_counts来存储每个子列表的统计结果
  • 逐个处理子列表:
    • 若子列表长度小于3,直接添加0到结果列表
    • 否则遍历中间的每个元素,对比当前元素和左右邻居,满足条件则计数递增
    • 将当前子列表的计数添加到结果列表
  • 最后返回完整的结果列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:56:57