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

如何在Python中查找列表中未知非None值的索引?

获取列表中非None值的索引方法

嘿,这个需求很清晰,既然你的列表里只有那个val不是None(而且保证存在),这里有几个简洁高效的方法帮你拿到它的索引:

  • 方法一:用enumerate+next()(最推荐)
    这个方法不用遍历整个列表,找到目标就停止,效率很高,代码也简洁:

    my_list = [None, None, None, "your_val"]
    val_index = next(idx for idx, item in enumerate(my_list) if item is not None)
    

    原理是enumerate会同时返回每个元素的索引和值,通过生成器表达式筛选出非None的元素,next()直接取第一个匹配项的索引——正好符合你的场景。如果担心极端情况(比如意外没有非None值),可以给next()加个默认值避免报错:

    val_index = next((idx for idx, item in enumerate(my_list) if item is not None), -1)
    
  • 方法二:基础循环遍历(适合新手理解)
    如果你想更直观地看到过程,用普通循环也很稳妥:

    my_list = [None, None, None, 456]
    val_index = -1
    for idx, item in enumerate(my_list):
        if item is not None:
            val_index = idx
            break  # 找到目标就退出循环,不用继续遍历
    
  • 方法三:先找值再查索引
    如果你还需要拿到val本身,也可以先取出值再用index()方法找索引:

    my_list = [None, None, None, False]
    val = next(item for item in my_list if item is not None)
    val_index = my_list.index(val)
    

    不过这个方法不如第一种直接,毕竟多了一步取值的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:49:56