我是否必须在Python中导致ValueError
题
我有这段代码:
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
我有办法做到这一点吗?
解决方案
注意,后一种方法违背了普遍接受的“pythonic”方法。 EAFP的哲学,或者“要求宽恕而不是许可更容易。”,前者遵循它。
其他提示
if element in mylist:
index = mylist.index(element)
# ... do something
else:
# ... do something else
对于您的列表是一系列单字符字符串的特定情况,您可以通过将要搜索的列表更改为提前字符串来获得所需的内容(例如,'。。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.
如果您在列表上进行大量搜索,这也可能表现得更好。如果它只是在一次性列表中的单个搜索,它不值得做。
不隶属于 StackOverflow