Listas
El concepto de secuencia es muy potente y no se limita a las cadenas. Python nos permite definir
secuencias de valores de cualquier tipo. Por ejemplo, podemos definir secuencias de n´umeros
enteros o flotantes, o incluso de cadenas. Hablamos entonces de listas. En una lista podemos,
por ejemplo, registrar las notas de los estudiantes de una clase, la evoluci´on de la temperatura
hora a hora, los coeficientes de un polinomio, la relaci´on de nombres de personas asistentes a
una reuni´on, etc.
Python sigue una notaci´on especial para representar las listas. Los valores de una lista deben
estar encerrados entre corchetes y separados por comas. He aqu´ı una lista con los n´umeros del
1 al 3:
>>> [1, 2, 3]
[1, 2, 3]
Podemos asignar listas a variables:
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
168 Introducci´on a la Programaci´on con Python
c 2003 Andr´es Marzal e Isabel Gracia 5 Tipos estructurados: secuencias
Los elementos que forman una lista tambi´en pueden ser cadenas.
>>> nombres = [’Juan’, ’Antonia’, ’Luis’, ’Mar´ıa’]
Y tambi´en podemos usar expresiones para calcular el valor de cada elemento de una lista:
>>> a = [1, 1+1, 6/2]
>>> a
[1, 2, 3]
Python almacena las listas del mismo modo que las cadenas: mediante referencias (punteros)
a la secuencia de elementos. As´ı, el ´ultimo ejemplo hace que la memoria presente un aspecto
como el que muestra el siguiente diagrama:
a 1
0
2
1
3
2
La asignaci´on a una variable del contenido de otra variable que almacena una (referencia a
una) lista supone la copia de, ´unicamente, su referencia, as´ı que ambas acaban apuntando a la
misma zona de memoria:
>>> a = [1, 2, 3]
>>> b = a
a 1
0
2
1
3
2
b
La lista que contiene un s´olo elemento presenta un aspecto curioso:
>>> a = [10]
>>> b = 10
a 10
0
b 10
Observa que no es lo mismo [10] que 10. [10] es la lista cuyo ´unico elemento es el entero 10, y
10 es el entero 10. Gr´aficamente lo hemos destacado enmarcando la lista y disponiendo encima
de la celda su ´ındice. Si pedimos a Python que nos muestre el contenido de las variables a y b,
veremos que la representaci´on de la lista que contiene un escalar y la del escalar son diferentes:
>>> print a
[10]
>>> print b
10
La lista siempre se muestra encerrada entre corchetes.
Del mismo modo que hay una cadena vac´ıa, existe tambi´en una lista vac´ıa. La lista vac´ıa se
denota as´ı: [] y la representamos gr´aficamente como la cadena vac´ıa:
>>> a = []
a
>>> print a
Cosas que, sin darnos cuenta, ya sabemos sobre las listas
Una ventaja de Python es que proporciona operadores y funciones similares para trabajar con
tipos de datos similares. Las cadenas y las listas tienen algo en com´un: ambas son secuencias
de datos, as´ı pues, muchos de los operadores y funciones que trabajan sobre cadenas tambi´en
lo hacen sobre listas. Por ejemplo, la funci´on len, aplicada sobre una lista, nos dice cu´antos
elementos la integran.
Comparaci´on de listas
Los operadores de comparaci´on tambi´en trabajan con listas. Parece claro c´omo se comportar´an
operadores como el de igualdad (==) o el de desigualdad (!=):
si las listas son de talla diferente, resolviendo que las listas son diferentes;
y si miden lo mismo, comparando elemento a elemento de izquierda a derecha y resolviendo
que las dos listas son iguales si todos sus elementos son iguales, y diferentes si hay alg´un
elemento distinto.
Hagamos un par de pruebas con el int´erprete de Python:
>>> [1, 2, 3] == [1, 2]
False
>>> [1, 2, 3] == [1, 2, 3]
True
>>> [1, 2, 3] == [1, 2, 4]
False
Los operadores <, >, <= y >= tambi´en funcionan con listas. ¿C´omo? Del mismo modo que
con las cadenas, pues al fin y al cabo, tanto cadenas como listas son secuencias. Tomemos,
por ejempo, el operador < al comparar las listas [1, 2, 3] y [1, 3, 2], es decir, al evaluar la
expresi´on [1, 2, 3] < [1, 3, 2]. Se empieza por comparar los primeros elementos de ambas
listas. Como no es cierto que 1 < 1, pasamos a comparar los respectivos segundos elementos.
Como 2 < 3, el resultado es True, sin necesidad de efectuar ninguna comparaci´on adicional.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario