es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear una lista de valores límite inferior y superior basados en un rango en Python a través de un bucle for?

Tengo un rango máximo (x) que necesito crear incrementos y generar listas de valores que aumenten en 1 respecto al valor anterior.

Ejemplo de escenario de codificación rígida:

x = 50000
max_val = 16384
id1 = pd<em>ID.loc[0:16384,]
id2 = pd</em>ID.loc[16385:32768]
id3 = pd<em>ID.loc[32769:49152]
id4 = pd</em>ID.loc[49152:50000]

El objetivo de este ejercicio es replicar el ejemplo anterior de una manera más automatizada, dado que x cambia para cada cuenta con la que estoy trabajando.

A continuación se muestra mi enfoque actual, pero observa que el valor de límite inferior comienza en 1 en lugar de 0 (lo cual necesito que comience en la primera fila [0]).

import math
x = 50000
incremento = math.ceil(x/16384)
print("incremento", incremento)
for i in range(incremento):
  print("i=", i)
  límite_superior = (16384 * (i+1)) if i < incremento-1 else x
  límite_inferior = límite_superior - 16384 + 1 if i < incremento-1 else ((16384 * (i))) + 1
  print(límite_inferior)
  print(límite_superior)

[1:16384]

[16385:32768]

[32769:49152]

[49152:50000]

Desired output:

[0:16384]

[16385:32768]

[32769:49152]

[49152:50000]

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada, simplemente puede modificar el cálculo del límite inferior en el código para restar 1 al resultado cuando i sea mayor que 0. Esto garantiza que el límite inferior para el primer incremento comience en 0, que es la primera fila del DataFrame. Aquí está el código modificado:

    import math
    
    x = 50000
    incremento = math.ceil(x/16384)
    
    for i in range(incremento):
        print("i=", i)
        limite_superior = (16384 * (i+1)) if i < incremento-1 else x
        limite_inferior = (limite_superior - 16384) if i > 0 else 0
        print(limite_inferior)
        print(limite_superior)
    

    Con esta modificación, la salida será:

    [0:16384]
    [16385:32768]
    [32769:49152]
    [49152:50000]
    

Comments are closed.