2016-04-07 30 views
40

Nel mio codice:Perché "www" .count ("ww") restituisce 1 e non 2?

>> s = 'abacaba' 
>> s.count('aba') 
>> 2 

Per il codice di cui sopra sto ottenendo la risposta corretta come 'aba' si verifica 2 volte nella stringa s.

Ma per il seguente caso:

>> s = 'www' 
>> s.count('ww') 
>> 1 

In questo caso mi aspetto che s.count('ww') tornerà 2. Ma restituisce 1.

Perché?

risposta

165

Leggi l'docs:

ritorno il numero di (non sovrapposti) occorrenze della sotto stringa sub nella stringa s[start:end]. I valori predefiniti per l'inizio e la fine e l'interpretazione dei valori negativi sono gli stessi delle sezioni.

Poiché "ww" è stato abbinato per la prima volta, procede dal terzo "w" e non corrisponde a "ww".

+2

Si noti che questa risposta fa riferimento alla funzione deprecata 'string.count()', non all'equivalente metodo ['str.count()'] (https://docs.python.org/2/library/stdtypes. html # str.count). –

34

string.count(s, sub[, start[, end]]):

ritorno il numero di (non sovrapposti) occorrenze della sotto stringa sub nella stringa s [start: end]. I valori predefiniti per l'inizio e la fine e l'interpretazione dei valori negativi sono gli stessi delle sezioni.

fonte: https://docs.python.org/2/library/string.html

+3

Si noti che questa risposta si riferisce alla funzione deprecata 'string.count()', non all'equivalente metodo ['str.count()'] (https://docs.python.org/2/library/stdtypes.html# str.count). –

9

Basta provare a pensare le cose come:

In questa parola: "Abacaba", quanti non sovrapposti parole "aba" cosa vedi? Vedo 2. E vedo anche una "c".

In questa parola: "www" quante non si sovrappongono alle parole "ww"? Vedo 1. E vedo anche una "w".

Per una spiegazione migliore, pensare di eliminare l'istanza quando si vede.

Per "abacaba" vedi "aba" ed eliminalo. ora c'è "caba", vedi di nuovo "aba" e cancellalo. ora ottieni solo "c". vedi "aba" due volte. È lo stesso per "www", vedi "ww" una volta e cancellalo. ora vedi solo "w". hai visto "ww" una sola volta.

Ha senso.

+39

l'intuizione è un povero sostituto per la lettura effettiva dei documenti –

+4

È anche impreciso; "quante parole" ww "vedi?" - In realtà vedo 2 e 3 "w" s. Puoi riformularlo molto meglio e più accurato. – Maroun

+0

Ok, lasciami spiegare.pensa che stai cancellando l'istanza quando vedi. Per "abacaba" vedi "aba" e cancellalo. ora c'è "caba", vedi di nuovo "aba" e cancellalo. ora ottieni solo "c". vedi "aba" due volte. È lo stesso per "www", vedi "ww" una volta e cancellalo. ora vedi solo "w". hai visto "ww" una sola volta. –