Risposte:
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
is
dalla frase this is a cool dude
? Ho provato il metodo find ma restituisce l'indice 2 invece di 5. Come posso ottenerlo usando find ()?
index
efind
Accanto al find
metodo c'è anche index
. find
ed index
entrambi danno lo stesso risultato: restituendo la posizione della prima occorrenza, ma se non viene trovato nulla index
solleverà a ValueError
mentre find
ritorna -1
. Per quanto riguarda la velocità, entrambi hanno gli stessi risultati di benchmark.
s.find(t) #returns: -1, or index where t starts in s
s.index(t) #returns: Same as find, but raises ValueError if t is not in s
rfind
e rindex
:In generale, find e index restituiscono l'indice più piccolo dove inizia la stringa passata e
rfind
erindex
restituiscono l'indice più grande dove inizia La maggior parte degli algoritmi di ricerca di stringhe cerca da sinistra a destra , quindi le funzioni che iniziano conr
indicano che la ricerca avviene da destra a sinistra .
Quindi, nel caso in cui la probabilità dell'elemento che stai cercando sia vicina alla fine rispetto all'inizio dell'elenco, rfind
o rindex
sarebbe più veloce.
s.rfind(t) #returns: Same as find, but searched right to left
s.rindex(t) #returns: Same as index, but searches right to left
Fonte: Python: Guida rapida visiva, Toby Donaldson
input_string = "this is a sentence"
e se vogliamo trovare la prima occorrenza della parola is
, allora funzionerà? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
per implementarlo in modo algoritmico, non utilizzando alcuna funzione incorporata in Python. Questo può essere implementato come
def find_pos(string,word):
for i in range(len(string) - len(word)+1):
if string[i:i+len(word)] == word:
return i
return 'Not Found'
string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4
def find_pos(chaine,x):
for i in range(len(chaine)):
if chaine[i] ==x :
return 'yes',i
return 'no'
verse = "Se riesci a mantenere la testa quando tutti intorno a te \ n stanno perdendo la loro e ti danno la colpa, \ nSe puoi fidarti di te stesso quando tutti gli uomini dubitano di te, \ n ma considera anche i loro dubbi; \ nSe puoi aspetta e non stancarti di aspettare, \ n o di essere mentito, non trattare con bugie, \ nO di essere odiato, non cedere all'odio, \ n Eppure non sembrare troppo buono, né parlare troppo saggio :"
enter code here
print(verse)
#1. What is the length of the string variable verse?
verse_length = len(verse)
print("The length of verse is: {}".format(verse_length))
#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")
print("The index of the word 'and' in verse is {}".format(index))
-1
se non viene trovato