Python - 查找列表中第一个非空项的索引
在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
用作变量名,因为这样会覆盖掉内置的功能。