Listas de
números enteros: la función range()Aunque más adelante se dedica una lección a las listas en general, en esta lección se introducen los conceptos básicos de listas y en particular las listas de números enteros:
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.
>>>lista = [1,'a',45]
>>>lista
[1, 'a', 45]
Una lista que no contiene ningún elemento se denomina lista vacía:
>>>lista = [ ]
>>>lista
[ ]
Al definir una lista se puede hacer referencia a variables y en la lista se almacena el valor de la variable. Si posteriormente se cambia la variable, la lista no se modifica:
>>>nombre = "Pepe"
>>>edad = 25
>>>lista = [nombre, edad]
>>>lista
['Pepe', 25]
>>>nombre = "Juan"
>>>lista
['Pepe', 25]
Una lista puede contener listas (que a su vez pueden contener listas, que a su vez etc.):
>>>persona1 = ["Ana", 25]
>>>persona2 = ["Benito", 23]
>>>lista = [persona1, persona2]
>>>lista
[['Ana', 25], ['Benito', 23]]
Se puede acceder a cualquier elemento de una lista escribiendo 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.
>>>lista = [10, 20, 30, 40]
>>>lista[2]
30
>>>lista[0]
10
Se pueden concatenar dos listas utilizando la operación suma.
>>>lista1 = [10, 20, 30, 40]
>>>lista2 = [30, 20]
>>>lista = lista1 + lista2 + lista1
>>>lista
[10, 20, 30, 40, 30, 20, 10, 20, 30, 40]
Volver al principio de la página
La función range() crea una lista de números enteros en sucesión aritmética. La función range() puede tener uno, dos o tres 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). Es decir, range(n) = [0, 1, ... , n-1]
>>>range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Si n no es positivo, se crea una lista vacía.
>>>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). Es decir, range(m,n) = [m, m+1, ... , n-1]
>>>range(5, 10)
[5, 6, 7, 8, 9]
>>>range(-5, 1)
[-5, -4, -3, -2, -1, 0]
Si n es menor o igual que m, se crea una lista vacía.
>>>range(5, 1)
[]
>>>range(3, 3)
[]
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 puede ser positivo o negativo. Es decir, range(m,n, p) = [m, m+p, ... , x] siendo x tal que n-p<=x<n (si p es negativo, n-p>=x>n)
>>>range(5, 21, 3) [5, 8, 11, 14, 17, 20] >>>range(10, 0, -2) [10, 8, 6, 4, 2]
El valor de p no puede ser cero:
>>> 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
Si p es positivo y n menor o igual que m, o si p es negativo y n mayor o igual que m, range(m, n, p) devolverá una lista vacía:
>>>range(25, 20, 2) [ ]
>>>range(20, 25, -2) [ ]
En resumen, los tres argumentos de la función range(m, n, p) son:
Si se escriben sólo dos argumentos, Python le asigna a p el valor 1. Es decir range(m, n) es lo mismo que range(m, n, 1)
Si se escribe sólo un argumento, Python, le asigna a m el valor 0 y a p el valor 1. Es decir range(n) es lo mismo que range(0, n, 1)
La función range sólo admite argumentos enteros. Si se utilizan argumentos decimales, se produce un errror:
>>>range(3.5, 10, 2)
Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> range(3.5, 10, 2) TypeError: range() integer start argument expected, got float.
Nota: En versiones antiguas de Python (falta decir en qué versión se produjo el cambio), si se usaban argumentos decimales Python los truncaba a enteros.
Volver al principio de la página
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]
Volver al principio de la página
Esta página forma parte del curso "Introducción a la programación con Python" disponible en http://www.mclibre.org
Esta obra está bajo una licencia de Creative
Commons.