[PIPython] estrarre una stringa random da un file
Federico Nati
federico.nati
Dom 27 Feb 2005 21:24:10 CET
ciao,
esiste un modo per ottimizzare la scrittura di uno dei seguenti tre algoritmi
che piu' o meno fanno la stessa cosa, ovvero estrarre una stringa a caso in un
file? Voglio leggere il file stringa a stringa, senza caricarlo in memoria,
una volta sola.
il modo piu' esplicito e':
--
#!/usr/bin/python
from sys import stdin
from random import random
s = stdin.readlines()
selected = s[0]
counter = 1
for x in s:
counter += 1
prob = 1./counter
if random() < prob:
selected = x
print selected
--
alrimenti mi pare piu' efficiente:
--
#!/usr/bin/python
from sys import stdin
from random import random
s = stdin.readlines()
print [x[1] for x in enumerate(s) if random() < 1./(x[0] + 1)][-1]
--
oppure ancora (ma piu' lento mi pare) sostituire con:
--
print reduce(lambda i, j: (i, j)[int(random() < 1./j[0])], enumerate(s))
--
Si puo' ottimizzare?
Ciao, Federico.
More information about the Python
mailing list