web-dev-qa-db-ja.com

検索とインデックスの違い

私はpythonが初めてで、findとindexの違いを十分に理解できません。

>>> line
'hi, this is ABC oh my god!!'
>>> line.find("o")
16
>>> line.index("o")
16

それらは常に同じ結果を返します。ありがとう!!

52
SohamC

str.find は、部分文字列が見つからないときに-1を返します。

>>> line = 'hi, this is ABC oh my god!!'
>>> line.find('?')
-1

str.indexValueErrorを発生させます:

>>> line.index('?')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

サブストリングが見つかった場合、両方の関数は同じように動作します。

81
falsetru

また、検索は、インデックスがリスト、タプル、および文字列で利用可能な文字列でのみ利用可能です

>>> somelist
['Ok', "let's", 'try', 'this', 'out']
>>> type(somelist)
<class 'list'>

>>> somelist.index("try")
2

>>> somelist.find("try")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'find'

>>> sometuple
('Ok', "let's", 'try', 'this', 'out')
>>> type(sometuple)
<class 'Tuple'>

>>> sometuple.index("try")
2

>>> sometuple.find("try")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Tuple' object has no attribute 'find'

>>> somelist2
"Ok let's try this"
>>> type(somelist2)
<class 'str'>

>>> somelist2.index("try")
9
>>> somelist2.find("try")
9

>>> somelist2.find("t")
5
>>> somelist2.index("t")
5
14
Reep