Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Daniel Garcia Moreno
2010/3/4 Kiko kikocorre...@gmail.com: Hola a todos. Estoy intentando buscar los indices de un subconjunto dentro de un conjunto y quiero saber si existe algo más eficiente que lo que he pensado. Me explico, por ejemplo, yo tengo: conjunto = range(1000, 1100, 1) subconjunto = range(1000,

Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Pablo Angulo
Daniel Garcia Moreno escribió: Según mis conocimientos en computación, esta búsqueda es de orden n^2. Si el primer conjunto está ordenado, puede llegar a ser de orden n*log(n) puesto que puedes hacer una búsqueda binaria en lugar de conjunto.index(valor). Y creo que no vas a poder optimizar

Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Pablo Angulo
Pablo Angulo escribió: indices = [] ultimo = 0 for v in subconjunto: ultimo += conjunto[ultimo:].index(v) indices.append(ultimo) [conjunto[j] for j in indices]==subconjunto Lamento ser pesado, pero hay que hacer un cambio: indices = [] ultimo = 0 for v in subconjunto:

Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Pablo Angulo
Daniel Garcia Moreno escribió: Si la lista grande tiene N elementos y la pequeña M, puedes elegir entre O(Mlog(N)), usando bisect. o O(N), con la técnica que te decía antes. O puedes combinar las dos, buscar desde el último indice en adelante pero hacerlo con busqueda binaria. Yo diría

Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Pablo Angulo
Olemis Lang (Simelix) escribió: Aquí por ejemplo hay un caso que ilustra el hecho de no confiar demasiado en las estimaciones teóricas . Las estimaciones de Pablo et al se pueden ver afectadas por la eficiencia de la implementación del método index (el cual no me parece que sea muy O(1) que

Re: [Python-es] Buscar índices de un array (que cump le condición) de forma eficiente

2010-03-04 Por tema Pablo Angulo
Kiko escribió: tiempo de la primera opción: 0.0149998664856 for i in subconjunto: ultimo = conjunto.index(i, ultimo+1) indices.append(ultimo) Los primero 25 valores de indices = [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72] tiempo