如果我想在Python中找到给定项目的数组索引,我会做这样的事情:
a = ["boo", "foo", "bar", "foz"]
i = a.index("foo")
和i
将是1
如果我正在寻找不存在的项目,则会引发ValueError
异常。
问题:为什么提出异常而不是返回-1
(因为JavaScript的等效函数indexOf
)更好?我发现检查-1更容易,而不是在try-catch中包装代码块。
答案 0 :(得分:3)
除了Daniel已经提到in his answer的索引反转论证之外,你必须记住,与JavaScript相比,异常是Python中更为核心的概念。
返回一些特殊值的想法,在这种情况下-1
,当没有找到值时,是一个概念,它来自异常在语言中不是一个很好的概念。最值得注意的是,它来自C,其中特殊的返回值可能意味着各种各样的东西。
JavaScript借用了大部分内容,因为它也没有安全的异常处理方式。由于它是一种弱类型语言,它只能捕获所有异常类型,因此只捕获一些IndexNotFoundException
并不会真正起作用。
然而,在Python中,异常是该语言的核心概念,并且它们被广泛用于许多特殊事物。因此,当项目不在列表中时,在这里使用它们是有意义的。
答案 1 :(得分:1)
python中的索引可以颠倒,-1
表示最后一个:
a = ["boo", "foo", "bar", "foz"]
a[-1] == "foz"
True