5

我有这个代码:

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

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

4

3 回答 3

9

请注意,后一种方法违背了 EAFP 普遍接受的“ pythonic”哲学,即“请求宽恕比许可更容易”。,而前者紧随其后。

于 2008-09-25T04:47:35.690 回答
7
if element in mylist:
    index = mylist.index(element)
    # ... do something
else:
    # ... do something else
于 2008-09-25T04:16:25.653 回答
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.

如果您在列表中进行大量搜索,这也可能会表现得更好。但是,如果只是在一次性列表上进行一次搜索,那不值得。

于 2008-09-25T07:27:39.813 回答