我有这段代码:

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.

如果您在列表上进行大量搜索,这也可能表现得更好。如果它只是在一次性列表中的单个搜索,它不值得做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top