猿问

如何在python列表中找到除0之外的任何数字的第一个索引?

我有一个包含 0 和其他一些数字的列表,如何找到非 0 数字的第一个索引?

例如,在此列表中list1 = [0,0,0,0,4,3,2,0,3]我如何找到 4 的索引?


神不在的星期二
浏览 213回答 5
5回答

哆啦的时光机

您可以用来enumerate迭代索引和值。然后next在找到第一个非零值时使用停止。如果StopIteration抛出异常,则列表不包含非零值,因此请执行您想要的任何错误处理。def first_non_zero(values):    try:        return next(idx for idx, value in enumerate(values) if value != 0)    except StopIteration:        return None例子>>> list1 = [0,0,0,0,4,3,2,0,3]>>> first_non_zero(list1)4>>> first_non_zero([0,0,0])>>>      # None

收到一只叮咚

这个简单的行:list(map(bool, list1)).index(True)4所有非零值的计算结果均为True,因此将所有元素转换为布尔值时,您只需找到第一个True。

翻过高山走不出你

最简单的方法是:list1.index([value for value in list1 if value!=0][0])当然,这只适用于列表中有非零元素的情况。如果你想处理所有情况,你可能需要使用以下函数:def first_non_zero_index(list1):    for idx, value in enumerate(list1):        if value!=0:            return idx    return None并将列表直接扔给它:first_non_zero_index(list1)它返回4

饮歌长啸

for i in range(len(list1)):    if list1[i] != 0:        print(i)        break或具体 4list1.index(4)

慕尼黑的夜晚无繁华

list1 = [0,0,0,0,4,3,2,0,3]for i in set(list1):    if i:        print("Index of {} is {}".format(i,list1.index(i)))
随时随地看视频慕课网APP

相关分类

Python
我要回答