2013-10-24 36 views
0

有沒有解決方案來檢查列表的索引是否存在?檢查列表的索引是否存在

除了:

  1. 使用

    try: 
        ... 
    except IndexError: 
        ... 
    

作爲字典具有dict.has_key(key)檢查密鑰是否存在使用len(list)

  • ,有檢查索引的任何方法列表?

  • +0

    您已經有了兩種方法。請注意'len(list)'很便宜。 –

    +3

    注意:'dict.has_key()'已被棄用。使用'in'進行成員資格測試:'鍵入字典'。 –

    +0

    @MartijnPieters可能值得注意的是,對於字典,'in'檢查鍵是否處於「in」,而對於列表則檢查值是否「in」。 –

    回答

    3

    不,沒有其他方法來測試索引是否存在。

    字典鍵不容易預測;你有一個成員資格測試,以確定一個密鑰是否存在有效,因爲掃描所有鍵將是低效的。

    列表不會遭受這個問題; len(somelist)很便宜(長度緩存在列表對象上),所以index < len(somelist)測試索引是否存在的方法,如果您希望索引大部分時間位於列表邊界內,那麼異常處理會有很大的回退。

    0

    您可以使用列表解析。

    index in [someList.index(item) for item in someList]: 
    

    如果列表中至少有index項,則返回true。

    對於字典,你可以做同樣的事情:

    index in [someDictionary.keys().index(item) for item in someDictionary.keys()] 
    

    值得指出的是,這真的是因爲使用len(list)try ... except作品非常清楚一個有爭議的問題。但是,嘿,你要求另一種方式,所以這是另一種方式。

    +0

    這是非常漫長的操作。開發者希望簡單而不復雜。而且,除了len和try-catch之外,哪個是另一個選項,這是一個簡單的問題。 – Nilesh

    +0

    你問了一個選項,除了len和try,這就是我給你的。你排除了最好的答案(len),所以任何其他的建議都將是漫長的操作。 – wnnmaw

    +0

    我只想知道,是否有任何其他現有的方法或功能來執行此操作。 – Nilesh