Cita:
Iniciado por alvlin Se me ocurre una forma en la que el código sería sencillo.
Utilizar "for x in" para recorrer el archivo, ir guardando cada línea en una lista, utilizar "for x in" en esa lista para ver si la línea que lees pertenece ya a la lista y por lo tanto es repetida.
El segundo caso es similar, podrías leer uno de los archivos hacia una lista (de líneas) y luego recorrer el otro, preguntando en cada línea si pertenece a la lista o no.
El problema es que, aunque se trate de código muy sencillo y solamente leas cada archivo una vez, en el "peor caso" (aquel en el que no hay líneas repetidas) estarías recorriendo la lista de líneas (sumatoria de 1 hasta 100000) veces, o lo que es lo mismo n(n+1)/2 veces, con n=100000.
Este número es nada más ni nada menos que 5000050000
:
Saludos.
Gracias Alvin.
Creo que con el primer caso te referias a mi segundo caso y viceversa.
Tengo el segundo caso, cuando una linea esta repetida en la lista, sería esto
Código python:
Ver originalimport sys
entrada=sys.argv[1]
file = open(entrada,'r')
combinaciones=[]
for linea in file:
if linea in combinaciones:
print "repetida: " + linea,
else:
combinaciones.append(linea)
Esta es como bien dices una manera.
Sobre el primer caso... podría tener en una lista todas las combinaciones 100.000 o más y en otra lista las que quiero buscar, pero para cada combinación que quiero comparar con el fichero debe recorselo entero.
En python no existe metodos de ordenación para buscar más rapido? tipo burbuja (el que mas me suena por el nombre) etc... ?