亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

神不在的星期二 2023-12-20 10:24:57
我有一個包含 0 和其他一些數字的列表,如何找到非 0 數字的第一個索引?例如,在此列表中list1 = [0,0,0,0,4,3,2,0,3]我如何找到 4 的索引?
查看完整描述

5 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

您可以用來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


查看完整回答
反對 回復 2023-12-20
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

這個簡單的行:

list(map(bool, list1)).index(True)
4

所有非零值的計算結果均為True,因此將所有元素轉換為布爾值時,您只需找到第一個True。


查看完整回答
反對 回復 2023-12-20
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

最簡單的方法是:


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


查看完整回答
反對 回復 2023-12-20
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

for i in range(len(list1)):

    if list1[i] != 0:

        print(i)

        break

或具體 4


list1.index(4)


查看完整回答
反對 回復 2023-12-20
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

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


查看完整回答
反對 回復 2023-12-20
  • 5 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號