[Python] Filtrare un carattere.

Alessandro dedalus2000 a gmail.com
Mer 18 Mar 2015 14:39:02 CET


On 03/18/2015 01:59 PM, Gabriele Battaglia wrote:
>
> Se scrivessi un programma che deve girare al massimo della velocità
> possibile, immagino che questa soluzione non andrebbe bene...
Dipende.. Gli immutabili possono essere onerosi.
Ad esempio:

txt = ''
while ...
    ..
    txt += msg


Ad ogni ciclo si ricrea una stringa copiando il contenuto dalla vecchia
(al quale viene aggiunto qualcosa). Se si itera molto è meglio qualcosa
tipo:

ll = []
while ..
  ...
  ll.append(msg)
txt = ''.join(ll)


> Per fortuna nel mio caso non devo preoccuparmi dei tempi.
Vero.
Anzi, volendo usare le liste forse ci metteresti di più
ll = list(txt)
ll.remove('x')
txt = ''.join(ll)  # ma devi comunque creare un'altra stringa!


Direi che se la velocità è importante in genere si cerca di evitare gli
immutabili fin dall'inizio.


> PS: E' vero che in una condizione, per risparmiare tempo di calcolo,
> bisognerebbe mettere a sinistra dell'operatore sempre l'espressione
> più semplice?

if (a) and (b) and (c) ..

Se "a" è falso il calcolo della condizione si interrompe. Quindi si: è
meglio che il calcolo di "a" sia meno oneroso del calcolo di "b" e "c" ,
a parità di possibilità che risultino False (e qui ti voglio..)
Ma forse stiamo spaccando il capello

Alessandro


Maggiori informazioni sulla lista Python