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

时间:2010-07-12 15:15:52

标签: python list

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

例如,使用

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

正确的非空索引应为:

3

5 个答案:

答案 0 :(得分:16)

>>> 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

P.S。不要使用list作为变量名,它会内置阴影。

答案 1 :(得分:5)

一种相对优雅的方式是:

map(bool, a).index(True)

(其中“a”是你的列表......我避免使用变量名“list”来避免覆盖原生的“list”函数)

答案 2 :(得分:2)

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

答案 3 :(得分:1)

next(i for (i, x) in enumerate(L) if x)

答案 4 :(得分:0)

next(i for i, v in enumerate(list) if v)
相关问题