Perché string.find ("") = 0? [chiuso]

1

Sto studiando Python e ho riagganciato su un semplice problema. Diciamo che abbiamo:

string = "hello"

Quando invochiamo il metodo find sulla stringa per trovare una stringa vuota come questa:

string.find("")

Perché è uguale a 0? Ho pensato che sarebbe pari a -1 poiché non è stato possibile trovare uno spazio vuoto.

    
posta johnnewbie 08.09.2016 - 04:04
fonte

4 risposte

7

"" è una stringa vuota (non la chiamerei uno spazio vuoto - ma ho il tuo significato).

Una stringa vuota può essere trovata ovunque che non sia una stringa. Cioè una stringa che non contiene nulla. Questo è probabilmente vero per molte lingue.

Questo significa che c'è una stringa vuota prima di h , dopo h , prima di e e così via .

Pensaci in questo modo, lo sappiamo

"" == ""

è vero

La stringa vuota è uguale alla stringa vuota. Un ritorno di -1 significherebbe un fallimento; cioè una non corrispondenza.

Tieni presente che "" non è solo all'inizio, come suggeriscono alcune risposte. Cioè La stringa non è solo "" + "hello" .

Dai un'occhiata a questo:

string = "hello"
string.replace("", "-")

>>> "-h-e-l-l-o-"
    
risposta data 08.09.2016 - 05:47
fonte
9

Quando una stringa x è della forma a + b ci si aspetterebbe x.find(a) di restituire 0 senza eccezioni.

Poiché la stringa "hello" è di forma "" + "hello" , è previsto il risultato "hello".find("") == 0 .

    
risposta data 08.09.2016 - 07:34
fonte
2

"" non è un personaggio . Un carattere è esattamente uno dei 256 (o 128, o 65536 o qualsiasi altro) testo del testo che hai a disposizione. Un personaggio (ad esempio il carattere dello spazio) può sembrare vuoto, ma è ancora esattamente uno di quegli atomi.

Le stringhe sono diverse. Sono costituiti da qualsiasi numero di caratteri e questo numero può essere 0. "" è la stringa con 0 caratteri: la stringa vuota. Non è migliore o peggiore di altre stringhe e infatti è spesso estremamente utile. Molti algoritmi sulle stringhe dovrebbero essere molto più complicati se non si presuppone che la stringa vuota esista, abbia lunghezza 0 e possa essere trovata ovunque si desideri.

    
risposta data 08.09.2016 - 09:37
fonte
1

Quando usi string.find(somesubstring) e restituisce un indice i , non uguale a -1, ciò significa che la sottostringa di string che inizia con l'indice i e che ha la stessa lunghezza di somesubstring è uguale a somesubstring (ed è il più piccolo di tali valori).

Poiché "hello"[0:0] , la sottostringa che inizia all'indice 0 con lunghezza 0, è effettivamente uguale a "" , il valore restituito è corretto.

    
risposta data 08.09.2016 - 10:03
fonte

Leggi altre domande sui tag