Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Rol del tercer argumento en range()
#1
Hola a todos espero se encuentren muy bien
Estoy introduciéndome en el mundo de la programación y tengo una inquietud con un ejercicio de listas, es el siguiente:

#Escribir un programa que almacene el abecedario en una lista, 
#de la lista las letras que ocupen posiciones múltiplos de 3, 
#y muestre por pantalla la lista resultante.


alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for i in range(len(alphabet), 1, -1):
    if i % 3 == 0:
        alphabet.pop(i-1)
print(alphabet)


Entiendo que el iterador empieza desde uno y con la función ".pop()" extrae un valor i-1 de la lista, pero lo que no entiendo son los parametros del range(), porque se supone que el primero es el inicio del ciclo y ahí se ve es la longitud de la lista, el segundo pues deberia ser hasta donde va y el tercero el intervalo entre cada iteración y tiene un "-1", quiero entenderlo a fondo si alguno me pudiera aclarar esa función se lo agradecería muchísimo

Feliz noche a todos
Responder
#2
Hola, bienvenido.

La función range() sirve para generar un intervalo de números, y los primeros dos argumentos indican el inicio y el fin de ese intervalo. Ahora bien, los números que constituyen ese intervalo pueden no ser consecutivos, y el intervalo puede ser creciente o decreciente. El tercer argumento de la función controla justamente la distancia entre los elementos del intervalo. Podés ver algunos ejemplos acá: https://micro.recursospython.com/recurso...range.html.

Si len(alphabet) es 27, estás generando un rango de 27 a 1 con una distancia de -1 entre cada uno de los números de ese intervalo, lo cual se puede comprobar en la consola interactiva:

  1. >>> list(range(27, 1, -1))
  2. [27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]


(Nótese que el último número del intervalo es 2, ya que el segundo argumento nunca está incluido). Otro ejemplo:

  1. >>> list(range(1, 10, 2))
  2. [1, 3, 5, 7, 9]


Podés pensarlo también de esta manera: si el tercer argumento es un número positivo, el intervalo es creciente; si es negativo, es descendiente.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)