Python - 查找列表中第一个非空项的索引

9 投票
6 回答
8702 浏览
提问于 2025-04-16 01:10

在Python中,找出列表中第一个非空项目的索引,最有效或最优雅的方法是什么?

比如,给定这个列表:

list_ = [None,[],None,[1,2],'StackOverflow',[]]

那么正确的非空索引应该是:

3

6 个回答

2

这段内容是关于编程的一个问题,涉及到一些技术细节。具体来说,提问者可能在遇到某种错误或困惑,想要寻求帮助。虽然没有具体的上下文,但通常这类问题会涉及到代码的运行、功能的实现或者是某个特定的编程语言的用法。

在编程中,大家常常会遇到各种各样的问题,比如代码不运行、结果不正确或者是某个功能无法实现。这时候,向社区求助是一个很好的选择,因为很多人可能遇到过类似的情况,能够提供解决方案或者建议。

总之,这段内容反映了编程过程中常见的求助情景,大家在学习编程时,遇到问题是很正常的,重要的是要积极寻求帮助和解决方案。

try:
    i = next(i for i,v in enumerate(list_) if v)
except StopIteration:
    # Handle...
6

一种比较优雅的方法是:

map(bool, a).index(True)

(这里的“a”就是你的列表……我避免使用“list”这个变量名,以免覆盖掉Python自带的“list”功能)

20
>>> lst = [None,[],None,[1,2],'StackOverflow',[]]
>>> next(i for i, j in enumerate(lst) if j)
3

如果你不想出现 StopIteration 错误,只需给 next 函数提供一个默认值:

>>> next((i for i, j in enumerate(lst) if j == 2), 42)
42

附注:不要把 list 用作变量名,因为这样会覆盖掉内置的功能。

撰写回答