我是否必须在Python中引起ValueError
时间:2020-03-06 14:42:12 来源:igfitidea点击:
我有以下代码:
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
有办法吗?
解决方案
if element in mylist:
index = mylist.index(element)
# ... do something
else:
# ... do something else
请注意,后一种方法违背了EAFP普遍接受的" pythonic"哲学,即"寻求宽恕比获得许可更容易"。
对于列表是单字符字符串序列的特定情况,我们可以通过将要搜索的列表预先更改为字符串来获得所需的内容(例如''.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.
如果我们在列表上进行大量搜索,则效果可能会更好。但是,如果仅是一次性列表中的单个搜索,则不值得这样做。

