我在Python中必须引发ValueError吗

5 投票
3 回答
3074 浏览
提问于 2025-04-11 09:24

我有这段代码:

chars = #some list

try:
    indx = chars.index(chars)
except ValueError:
    #doSomething
else:
   #doSomethingElse

我想这样做,因为我不喜欢故意引发异常:

chars = #some list

indx = chars.index(chars)

if indx == -1:
    #doSomething
else:
   #doSomethingElse

有没有什么办法可以做到这一点?

3 个回答

0

如果你的列表是由单个字符组成的字符串,你可以先把这个列表转换成一个字符串,比如用 ''.join(chars) 这个方法。

然后你可以使用 .find() 方法,这样就能达到你想要的效果。不过,列表或元组没有类似的方法。

另外一个选择是使用字典。比如:

d = dict((x, loc) for (loc,x) in enumerate(chars))
...
index = d.get(chars_to_find, -1)  # Second argument is default if not found.

如果你需要在这个列表上进行很多次搜索,使用字典可能会更快。不过,如果只是对一个临时的列表进行一次搜索,那就没必要这样做了。

7
if element in mylist:
    index = mylist.index(element)
    # ... do something
else:
    # ... do something else

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

10

请注意,后面提到的方法与通常被接受的“Python风格”相悖,这种风格被称为EAFP,意思是“请求原谅比请求许可更容易”。而前面提到的方法则是遵循这种风格的。

撰写回答