Creo que la razón para no tener métodos separados de 'buscar' e 'indexar' es que no son lo suficientemente diferentes. Ambos devolverían lo mismo en el caso de que el elemento buscado exista en la lista (esto es cierto para los dos métodos de cadena); difieren en caso de que el elemento buscado no esté en la lista/cadena; sin embargo, puede construir trivialmente cualquiera de los dos: find/index. Si vienes de otros idiomas, puede parecer de mala educación plantear y detectar excepciones para una condición sin errores que podrías probar fácilmente, pero en Python, a menudo se considera más pitónico disparar primero y hacer preguntas más tarde, er , para usar el manejo de excepciones en lugar de pruebas como esta (ejemplo: Better to 'try' something and catch the exception or test if its possible first to avoid an exception?).
No creo que sea una buena idea para construir 'hallazgo' de 'índice' y 'en', como
if foo in my_list:
foo_index = my_list.index(foo)
else:
foo_index = -1 # or do whatever else you want
porque tanto dentro como índice requerirá un O pasar (n) a lo largo la lista.
mejor construir 'hallazgo' de 'índice' y tratar/catch, como:
try:
foo_index = my_list.index(foo)
catch ValueError:
foo_index = -1 # or do whatever else you want
Ahora, en cuanto a porqué la lista fue construido de esta manera (con un índice solamente), y la cadena se construyó el de otra manera (con índice separado y encontrar) ... No puedo decir.
Esta pregunta es sobre la lista equivalente de esto: '" 112131 ".find (" 1213 ") => 1' es decir' [1,1,2,1,3,1] .find ([1,2 , 1,3]) => 1' - Si quieres hacer esto * en tiempo lineal *, necesitas implementar uno de los algoritmos de coincidencia de cadenas tú mismo, lo cual no es tan fácil. –