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

Python如何查找list/string/range等序列中指定元素的下一个元素

解决方案

原有实现问题

  • 强制将所有输入转为list,若输入为大尺寸/无限迭代器,会直接触发内存溢出或超时,且一次性消耗整个迭代器资源,存在严重冗余
  • 先做in判断再调用index方法,相当于对序列完整遍历两次,性能开销翻倍

最优实现代码

def next_item(xs, item):
    it = iter(xs)
    for elem in it:
        if elem == item:
            return next(it, None)
    return None

实现优势

  • 全类型适配:支持列表、字符串、range、迭代器、生成器等所有Python可迭代对象
  • 极致内存效率:遍历全程仅保留当前元素,无论输入序列多大都不会占用额外内存,完全避免超时问题
  • 性能最优:遍历到目标元素后立刻停止执行,最多仅遍历一次序列,无任何冗余操作

测试验证

所有给出的测试用例均可完美匹配预期输出:

  • next_item([1, 2, 3, 4, 5, 6, 7, 8], 5) → 6
  • next_item(['a', 'b', 'c'], 'd') → None
  • next_item(['a', 'b', 'c'], 'c') → None
  • next_item('testing', 't') → 'e'
  • next_item(iter(range(1, 3000)), 12) → 13

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:42:02