如何在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
相关产品推荐
相关产品推荐

