Re: [Python] Digest di Python, Volume 68, Numero 14

2011-10-14 Per discussione Riccardo Lemmi
Giuseppe Amato wrote:

> Interessa anche a me la cosa
> 
> for i,c in enumerate(leggi):
>>if c=="a" : print i
>>
>> se stessi cercando una parola intera potrei fare:
> 
> sstr = "apici"
> lsstr=len(sstr)
> for i,c in enumerate(leggi):
>if c=="a" and leggi[i:i+lsstr]==sstr : print i
> 

Con il codice dovresti esprimere quello che vuoi fare: in questo caso secondo 
me 
è fuorviante cercare una 'a' e poi la stringa:

sstr = "apici"
lsstr=len(sstr)
for i in range(len(leggi)):
   if leggi[i:i+lsstr]==sstr: print i


> Ma mi conviene rispetto alle altre due proposte? Qual è la più veloce?
> 

Secondo me la versione con le espressioni regolari è la migliore dal punto di 
vista della comprensibilità, ma non ho fatto un controllo sulla velocità che 
puoi fare tu usando timeit:

   http://docs.python.org/library/timeit.html

>> sstr = "sa"
>> lsstr = len(sstr)
>>
>> pos = leggi.find(sstr)
>> print pos
>> while True:
>>new_pos = leggi.find(sstr, pos+lsstr)
>>if new_pos == -1:
>>break
>>else:
>>pos = new_pos
>>print pos
>>
>> oppure
>>
>> import re
>> expr = re.compile('sa')
>> for e in expr.finditer(leggi):
>>print e.start()
>>
>>
>>
> 

-- 
   Riccardo Lemmi

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Digest di Python, Volume 68, Numero 14

2011-10-13 Per discussione Giuseppe Amato
Interessa anche a me la cosa

for i,c in enumerate(leggi):
>if c=="a" : print i
>
> se stessi cercando una parola intera potrei fare:

sstr = "apici"
lsstr=len(sstr)
for i,c in enumerate(leggi):
   if c=="a" and leggi[i:i+lsstr]==sstr : print i

Ma mi conviene rispetto alle altre due proposte? Qual è la più veloce?


> sstr = "sa"
> lsstr = len(sstr)
>
> pos = leggi.find(sstr)
> print pos
> while True:
>new_pos = leggi.find(sstr, pos+lsstr)
>if new_pos == -1:
>break
>else:
>pos = new_pos
>print pos
>
> oppure
>
> import re
> expr = re.compile('sa')
> for e in expr.finditer(leggi):
>print e.start()
>
>
>

-- 
--
Giuseppe Amato
e-mail: giuam...@gmail.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python