Volver al índice Sucesiones enteras: la función range()

En esta lección aprenderás:


Listas

Aunque más adelante se dedica una lección a las listas, en este tema empezarás a utilizarlas. En Python, una lista es un conjunto ordenado de elementos del mismo o diferente tipo. Se representan escribiendo los elementos entre corchetes y separados por comas. Una variable puede almacenar una lista completa y la variable hace referencia a la lista completa. Aquí tienes varios ejemplos.

>>>lista1 = [1,'a',45]

>>>lista1

[1, 'a', 45]

>>>lista2 = [100,'bea',23,lista1,4]

>>>lista2

[100,'bea', 23, [1,'a', 45], 4]

>>>variable = 'hola'

>>>lista3 = [variable,88]

>>>lista3

['hola', 88]

>>>lista4 = [ ]

>>>lista4

[ ]

Fíjate en que una lista puede contener elementos de diferentes tipos, números, cadenas, variables (se almacena el valor que tenga la variable) e incluso otras listas. Una lista que no contiene ningún término se llama lista vacía


Puedes acceder a cualquier elemento de la lista indicando el nombre de la lista y entre corchetes el número de orden en la lista. El primer elemento de la lista es el número 0.

>>>lista2[0]

100

>>>lista2[3]

[1,'a', 45]


Puedes concatenar dos listas utilizando la operación suma.

>>>lista5 = lista1 + lista2

>>>lista5

[1, 'a', 45, 100, 'bea', 23, [1, 'a', 45], 4]


La función range()

La función range() crea una lista de números enteros en sucesión aritmética. La función range() puede tener 1, 2 o 3 argumentos numéricos.


La función range con un único argumento se escribe range(n) y crea una lista creciente de n términos enteros que empieza en 0 y acaba antes de llegar a n (los términos aumentan de uno en uno). Si n no es positivo, se crea una lista vacía.

>>>range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>range(-2)

[ ]

>>>range(0)

[ ]


La función range con dos argumentos se escribe range(m, n) y crea una lista creciente de términos enteros que empieza en m y acaba antes de llegar a n (los términos aumentan de uno en uno). Si n es menor o igual que m, se crea una lista vacía.

>>>range(5,10)

[5, 6, 7, 8, 9]

>>>range(-5,1)

[-5, -4, -3, -2, -1, 0]

>>>range(5,1)

[ ]


La función range con tres argumentos se escribe range(m, n, p) y crea una lista que empieza en m y acaba antes de llegar a n, avanzando de p en p. El valor de p no puede ser nunca cero. Si p es positivo la lista será creciente, pero n tiene que ser mayor que m para que la lista no sea vacía. Si p es negativo la lista será decreciente, pero n tiene que ser menor que m para que la lista no sea vacía.

>>>range (5,21,3)
[5, 8, 11, 14, 17, 20]
>>>range (10,0,-2)
[10, 8, 6, 4, 2]
>>> range (4,18,0)
Traceback (most recent call last):/span>
  File "<pyshell#0>", line 1, in ?
    range (4,18,0)
ValueError: range() arg 3 must not be zero
>>>range(5,1,3)
[ ]
>>>range(20,25,-2)
[ ]

En resumen, los tres argumentos de la función range(m, n ,p) son respectivamente el valor inicial, el límite (que no se alcanza nunca) y el paso (la cantidad que se avanza cada vez). Cuando usas range() con dos argumentos, Python asigna como paso el valor 1. Cuando usas range() con un sólo argumento, Python asigna como valor inicial el valor 0 y como paso el valor 1.


Si empleas decimales como argumentos de la función range, Python los trunca automáticamente a números enteros y ejecuta la función con los valores truncados.

>>>range(2.5, 16.3, 2.3) # Da el mismo resultado que range(2, 16, 2)
[2, 4, 6, 8, 10, 12, 14]
>>>range(3.5, 9.3, 0.5) # Error porque 0.5 truncado es 0 y el paso no puede ser 0.
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in ?:
    range (3.5, 9.3, 0.5)
ValueError: range() arg 3 must not be zero

La función len()

La función len() devuelve la longitud de una lista o de una cadena de carácteres. El argumento de la función len() es la lista o cadena que queremos "medir".

>>>len('mensaje secreto')

15

>>>len(['a','b','c'])

3

El valor devuelto por la función len() se puede usar como parámetro de la función range().

>>>range(len('mensaje secreto'))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>>range(len(['a','b','c']))

[0, 1, 2]


Ejercicios relacionados con este tema: Ejercicios de la función range()
Siguiente lección: Bucle for.

Autor: Bartolomé Sintes Marco
Última modificación de esta página: 14 de octubre de 2002