-
哆啦的时光机
您可以用来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)))