Volver al índiceListas 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:


Listas

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()

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()

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
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 15 de mayo de 2012

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.