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

リストが 1 文字の文字列のシーケンスである特定のケースでは、事前に検索するリストを文字列に変更することで、必要なものを取得できます (例: ''.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.

これは、リストで多くの検索を行っている場合にもパフォーマンスが向上する可能性があります。ただし、使い捨てリストを 1 回検索するだけなら、やる価値はありません。

于 2008-09-25T07:27:39.813 に答える