What would be the most efficient\elegant way in Python to find the index of the first non-empty item in a list?
For example, with
list_ = [None,[],None,[1,2],'StackOverflow',[]]
the correct non-empty index should be:
3
>>> lst = [None,[],None,[1,2],'StackOverflow',[]]
>>> next(i for i, j in enumerate(lst) if j)
3
if you don't want to raise a StopIteration
error, just provide default value to the next
function:
>>> next((i for i, j in enumerate(lst) if j == 2), 42)
42
P.S. don't use list
as a variable name, it shadows built-in.
One relatively elegant way of doing it is:
map(bool, a).index(True)
(where "a" is your list... I'm avoiding the variable name "list" to avoid overriding the native "list" function)
try:
i = next(i for i,v in enumerate(list_) if v)
except StopIteration:
# Handle...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With