Você está na página 1de 31

1 Listas

Hasta este punto, cada variable que hemos creado ha hecho referencia a una cuerda o un nmero. En este captulo, trabajaremos con colecciones de datos y usaremos un tipo de Python llamado lista. Las listas contienen 0 ms objetos y nos permiten almacenar datos, tales como las medidas de 90 experimentos o las identificaciones de 10,000 estudiantes. Tambin, veremos cmo acceder archivos y cmo representar sus contenidos mediante listas.

1.1 Listas e ndices


La figura 5.1, muestra el nmero de ballenas grises, contadas cerca de la reserva natural Coal Oil Point, durante un periodo de dos semanas en la primavera de 2008. Estos datos son reales y fueron tomados de la pgina con direccin: http://www.acschannelislands.org/2008CountDaily.pdf
Nmero de ballenas observadas 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Figura 5.1.- Censo de ballenas grises

Da

5 4 7 3 2 3 2 6 4 2 1 7 1 3

Usando lo que hemos visto hasta ahora, tendramos que crear catorce variables para dar seguimiento a estos nmeros (ver la figura 5.2). Por otra

parte, si deseamos dar seguimiento a las observaciones de un ao entero, necesitaremos 366 (en este caso por tratarse de un ao bisiesto). Lo que es peor, si no conocemos con anticipacin cunto tiempo se desean observar las ballenas, entonces, no podramos saber cuntas variables crear.
Variable01-- 5 Variable02 -- 4 Variable03 -- 7 Variable04 -- 3 Variable05 -- 2 Variable06 -- 3 Variable07 -- 2 Variable08 -- 6 Variable09 -- 4 Variable10 -- 2 Variable11 -- 1 Variable12 -- 7 Variable13 -- 1 Variable14 -- 3
Figura 5.2.- Vida sin listas

La solucin es almacenar todos los valores juntos en una lista. Las listas se manifiestan por todos lados en el mundo real: los estudiantes de una clase, las clases de serpientes nativas de Quintana Roo, los ciclones que han ocurrido en la pennsula de Yucatn en los ltimos diez aos y as sucesivamente. Para crear una lista en Python, colocamos los valores, separados por comas, dentro de corchetes:

Una lista es un objeto. Como cualquier otro objeto, puede ser asignado a una variable:

En la figura 5.3, podemos ver un modelo de memoria de Ballenas despus de su asignacin. Es importante mantener en mente que la lista por s misma es un objeto, pero, que puede contener referencias a otros objetos (mostrados por las flechas).

Figura 5.3.- Ejemplo de listas

Siendo as, Cmo accedemos a los objetos de una lista? Proporcionando un ndice que especifica al elemento que se desea. Si es el primer tem de la lista, ese ndice ser 0, el segundo objeto tendr el ndice 1 y as sucesivamente. Para hacer referencia a un tem en particular, colocaremos el ndice dentro de corchetes despus de la referencia a la lista (tal como el nombre de la variable):

Slo

usaremos

aquellos

ndices

que

se

encuentre

dentro

del

rango

comprendido por cero y el tamao de la lista menos uno. En una lista de catorce tems, los ndices legales son 0, 1, 2, y as sucesivamente hasta 13. El hecho de tratar de usar un ndice fuera de este rango es un error, equivalente al tratar de hacer una divisin por cero.

A diferencia de la mayora de los lenguajes de programacin, Python tambin nos permite indexar en reversa, partiendo del final de la lista. El ltimo tem tiene el ndice -1, el penltimo tendr -2 y as sucesivamente.

Podemos asignar los valores de una lista a otras variables:

1.1.1 La lista vaca


El cero es un nmero til y, como vimos en el captulo 3 (Cuerdas), la cuerda vaca es, con frecuencia, til tambin. As mismo, existe una lista vaca, en otras palabras, una lista sin tems en ella. Como podras adivinarlo, es representada por []. Tratar de aplicar un ndice a una lista vaca siempre generar un error:

Esto se apega a la definicin de los ndices legales: 1. Los ndices legales para una lista de N tems son los enteros que pertenecen al conjunto

2. El tamao de una lista vaca es 0. 3. Los ndices legales para una lista vaca son, por lo tanto, los elementos del conjunto

< < 1 .

4. Ya que este conjunto es vaco, no existen ndices legales para la lista vaca.

1.1.2 Las listas son heterogneas


Las listas pueden contener cualquier tipo de dato, incluyendo enteros, cuerdas y otras listas. He aqu una lista de la informacin acerca del elemento Kriptn, incluye su nombre, el smbolo, el punto de fusin (en grados Celsius) y su punto de ebullicin (tambin en grados Celsius). El uso de una lista para juntar informacin relacionada es algo propenso a errores: Una manera mejor, pero ms avanzada, de hacer esto es descrito en el captulo 13, Programacin orientada a objetos.

1.2 Modificacin de las listas


Supn que estamos escribiendo una lista de los gases nobles y que nos equivocamos (cuando se muestra el contenido de una variable en Python, sin usar el estatuto print, la letras acentuadas se escriben en cdigo UNICODE, por lo tanto, no usaremos acentos para efectos de este ejemplo):

El error aqu es que hemos escrito enn en lugar de nen. En lugar de reescribir la lista completa, podemos asignar un valor nuevo al elemento especfico de la lista:

En la figura 5.4, mostramos qu es lo que hizo la asignacin al tem GasesNobles[1]. Tambin, muestra que las listas son mutables, en otras palabras, que sus contenidos pueden ser cambiados despus que han sido

creadas.

Figura 5.4.- Mutacin de las listas

En contraste, los nmeros y las cuerdas son inmutables. Por ejemplo, no puedes cambiar una letra en una cuerda despus de que ha sido creada. Los mtodos empleados en ellas, tal como upper, realmente generan cuerdas nuevas:

La expresin L[i] se comporta exactamente como una variable simple (ver la seccin 2.4, Variables y el estatuto de asignacin). Si est de lado derecho, significa Tomar el valor del tem en la ubicacin i de la lista L. Si est del lado izquierdo, significa Ubcate en el tem i de la lista L para que podamos modificar su valor.

1.3 Funciones integradas para las listas


Funcin
len(L) max(L) min(L) sum(L)

Descripcin
Genera como resultado el nmero de tems de la lista L. Regresa el valor mximo de lista L. Regresa el valor mnimo de la lista L. Genera como resultado la suma de los valores de los tems de la lista L.

Figura 5.5.- Funciones aplicadas a las listas

En la seccin 2.6, Fundamentos de las funciones, introdujimos unas cuantas funciones integradas de Python. Algunas de ellas, tal como len, pueden aplicarse, tambin, a las listas, as como otras que an no hemos visto (ver la figura 5.5). En el siguiente ejemplo, se aplican sobre una lista que contiene la vida promedio los istopos del plutonio:

Podemos usar los resultados de las funciones integradas en las expresiones. Por ejemplo, el siguiente cdigo demuestra que podemos verificar si un ndice se encuentra dentro de rango:

Al igual que los otros objetos, las listas tienen un tipo particular y Python reclama si tratas de combinar tipos de manera inapropiada. He aqu lo que sucede cuando tratas de combinar una lista con una cuerda:

Ese error que reporta es interesante. Insina que debemos ser capaces de concatenar listas con listas para crear nuevas listas, de la misma manera que concatenamos cuerdas para crear nuevas cuerdas. Un experimento pequeo muestra que esto ocurre de hecho:

Como se muestra en la figura 5.6, esto no modifica alguna de las listas originales. En lugar de ello, crea una lista nueva cuyas entradas hacen referencia a las listas originales.

Figura 5.6.- Concatenacin de listas

Siendo as, si + trabaja con las listas, La suma trabajar sobre las listas de cuerdas? Despus de todo, si sum([1, 2, 3]) es lo mismo que 1 + 2 + 3, Debera sum([a, b, c]) ser lo mismo que a + b + c o abc. El cdigo siguiente muestra que la analoga no puede ser llevada hasta ese extremo:

Por otra parte, puedes multiplicar una lista por un entero para obtener una lista nueva que contenga los elementos de la lista original repetidos cierto nmero de veces:

Al igual que en la concatenacin, la lista original no es modificada, en lugar de eso, una lista nueva es creada. Observa, por otro lado, que hemos usado string.split para convertir la cuerda Fe Ni Cu en la lista de tres elementos [Fe, Ni, Cu]. ste es un truco comn en los programas de Python.

1.4 Procesamiento de los tems de las listas


Las listas fueron inventadas para que no tengamos que crear 1,000 variables para almacenar un millar de valores. Por la misma razn, Python tiene un ciclo for que nos permite procesar cada elemento de una lista, sin tener que escribir un estatuto por elemento. La forma general de un ciclo for es la siguiente: for Variable in Lista: bloque

Como hemos visto en la seccin 2.6, Fundamentos de las funciones, un bloque es slo una secuencia de uno o ms estatutos. Variable y Lista son slo una variable y una lista, respectivamente. Cuando Python encuentra un ciclo, ejecuta el bloque del ciclo una vez por cada uno de los valores de la lista. Cada pasada a travs del bloque es denominado una iteracin y, en el inicio de cada iteracin, Python asigna el valor del siguiente tem de la lista a la Variable especificada. Por ejemplo, este cdigo imprime cada velocidad de un objeto que cae en unidades mtricas e inglesas:

Aqu hay otras dos cosas que notar acerca de este ciclo: En espaol diramos para cada velocidad de la lista, imprime su valor en unidades mtricas y, entonces, imprime su equivalente en unidades inglesas. En Python, casi diramos lo mismo. Al igual que en las definiciones de funciones, los estatutos en el bloque del ciclo se encuentran con sangras. (Hemos usado cuatro espacios en es este libro, verifica con tu instructor si desea algo diferente). En este caso, creamos una variable nueva Velocidad para almacenar los valores actuales de los tems de la lista dentro del ciclo. Igualmente, podramos hacer uso de una variable que ya existe. Si lo hacemos, el ciclo

comenzar con el valor del primer tem de la lista cualquier valor que la variable haya tenido antes del ciclo se perder:

De cualquier manera, la variable contendr el valor del ltimo tem que haya sido procesado en el ciclo for. Nota, por otra parte, que el ltimo estatuto print no tena sangra, siendo as, no es parte del ciclo. Es ejecutado, una sola vez, despus que el ciclo for ha terminado.

1.4.1 Ciclos anidados


Previamente, hemos dicho que el bloque de estatutos dentro de un ciclo puede contener cualquier cosa. Esto significa que, tambin, puede contener otro ciclo. Por ejemplo, este programa recorre la lista ListaInterna una vez por cada uno de los elementos de la lista ListaExterna:

Si el ciclo externo tiene N0 iteraciones y el ciclo interno se ejecuta Ni veces para cada una de ellas, el ciclo interno se ejecutar un total de N0*Ni veces. Un caso especial se presenta cuando los ciclos interno y externo se ejecutan sobre una misma lista de tamao N, ya que el ciclo interno se ejecutar N2 veces. Esto puede ser empleado para generar una tabla de multiplicacin. Despus de imprimir el rengln de encabezado, usaremos un ciclo anidado para imprimir cada rengln de la tabla, haciendo uso de tabuladores para hacer las columnas de la lnea:

sta es la salida de la funcin ImpresionTablaMultiplicar:

Observa cmo las dos clases diferentes de formateo son usados. El estatuto print en la parte inferior del programa imprime un caracter de nueva lnea en el momento en que el ciclo externo avanza. Por otra parte, el ciclo interno incluye un caracter de tabulacin enfrente de cada tem.

1.5 Pedazos de listas


Los genetistas describen a los gusanos Caenorhabditis elegans

(nemtodos o gusanos microscpicos) con rtulos pequeos de tres letras. Los ejemplos incluyen Emb (letalidad embrionaria), Him (alta incidencia de machos), Unc (descoordinados), Dpy (regordetes: pequeo y gordo), Sma (pequeo) y Lon (grandes). Podemos hacer esto guardando los rtulos en una lista:

Resulta que los gusanos Dpy y Sma son difciles de distinguir entre s, de manera que no son tiles como rtulos en razas complejas. Podemos producir una lista nueva basndonos en RotulosCElegans, pero, sin incluir Dpy y Sma, tomando una parte o pedazo de la lista:

Esto crea una lista nueva, que consiste slo de los cuatro rtulos que pueden ser aplicados (ver la figura 5.7). El primer ndice en el pedazo es el punto de inicio. El segundo ndice tiene un valor superior en uno al valor del ndice del ltimo tem que se deseaba incluir. Ms rigurosamente, Lista[i:j] es un fragmento de la lista original, que va desde el ndice i (incluyndolo) hasta el ndice j, sin incluir a este ltimo. El primer ndice puede omitirse si se desea tomar una pedazo desde el inicio de la lista. Tambin, el ltimo ndice puede ser omitido si se desea un pedazo que

abarque hasta el final.

Figura 5.7.- El acceso a pedazos de la lista no realiza modificacin alguna.

Un ejemplo de las omisiones del inicio y el final es el siguiente:

Para crear una copia complete de la lista, slo omitiremos ambos ndices, de manera que el acceso vaya desde el inicio hasta el final:

1.6 Asignando alias


Un alias es un nombre alternativo para algo. En Python, se dice que dos variables actan como alias cuando hacen referencia al mismo valor. Por

ejemplo, el cdigo siguiente crea dos variables, donde ambas hacen referencia a una sola lista (ver la figura 5.8). Cuando modificamos la lista haciendo uso de una de las variables, las referencias por medio de la otra variable, tambin, muestran los cambios:

El uso de los alias es una de las razones por las cuales la nocin de mutabilidad es importante. Por ejemplo, si x y y se refieren a la misma lista, entonces cualquier cambio que le hagas a ella por medio de x ser reflejado en y y viceversa. Esto puede conducir a varias clases de errores difciles de encontrar, en los cuales los valores de los tems de la lista cambian como si fuera por arte de magia, donde parece que un programa no les asigna valor a alguno de ellos. Esto no ocurre con valores inmutables tales como las cuerdas. Ya que una cuerda no puede ser cambiada despus de que ha sido creada, es seguro tener alias para ella.

Figura 5.8.- Alias aplicados a las listas

1.6.1 alias en la invocacin de las funciones


El uso de alias tambin ocurre cuando usamos como parmetros a las listas, ya que los parmetros son variables.
Mtodo
Lista.append(v) Lista.insert(i, v) Lista.remove(v) Lista.reverse() Lista.sort() Lista.pop()

Descripcin
Agrega el tem v a Lista. Inserta el valor v en la posicin i de Lista, los tems siguientes son movidos para hacer espacio. Elimina la primera ocurrencia del valor v en Lista. Invierte el orden de los valores en Lista Ordena, ascendentemente, los valores en Lista (para las cuerdas, el orden es alfabtico) Elimina y genera como resultado el valor del ltimo elemento de Lista, la cual no debe estar vaca.

Figura 5.9.- Mtodos de las listas

He aqu una funcin que toma una lista, la ordena y la deja en orden inverso:

Esta funcin modifica a Lista y, ya que sta es un alias de la variable RotulosCElegant, entonces esta ltima es modificada, tambin.

1.7 Mtodos de las listas


Las listas son objetos, por lo tanto, tienen mtodos. Algunos de los empleados comnmente son mostrados en la figura 5.9. He aqu un ejemplo de cmo podemos emplearlos para construir una lista que contenga todos los colores del arcoris.

Es importante notar que todos estos mtodos modifican la lista en lugar de crear una nueva. Lo hacen as porque las listas pueden crecer hasta llegar a ser demasiado grandes los registros de un milln de pacientes, por ejemplo, o miles de medidas de un campo magntico. La creacin de una lista cada vez que alguien las manipula con sus mtodos volvera a Python muy lento, de manera que dejaran de ser tiles. Bajo esa perspectiva de creacin Python tendra que adivinar cundo deber hacer una copia y cundo deber operar al interior de la lista, tarea que es casi imposible de llevar a cabo. Es importante recordar que todos estos mtodos, excepto pop, regresan el valor especial None, lo cual significa No hay informacin til o No hay nada aqu. Python no despliega nada cuando se le pide que muestre el valor None. Por el otro lado, su impresin nos muestra que est all:

Finalmente, una invocacin a append no es lo mismo que +. Primero,

append agrega un tem a la lista mientras que + espera que sus operandos sean dos listas. Segundo, append modifica la lista en lugar de crear una nueva.

1.8 Listas anidadas

Figura 5.10.- Listas anidadas

Dijimos en la seccin 5.2, Las listas son heterogneas, que las listas pueden contener cualquier tipo de dato. Eso significa que pueden contener otras listas, tal como el cuerpo de un ciclo puede contener otro ciclo. Por ejemplo, la siguiente lista anidada describe las expectativas de vida en diferentes pases:

Como se muestra en la figura 5.10, cada tem de la lista externa es, por s mismo, una lista de dos elementos. Usamos la notacin estndar para acceder a los tems de la lista externa:

Ya que cada uno de estos tems es, tambin, una lista, podemos indexarlos otra vez, de la misma manera que podemos encadenar invocaciones a mtodos o pasar el resultado del llamado a una funcin como un argumento de otra funcin:

Tambin, podemos asignar sub-listas a variables:

La asignacin de una sub-lista a una variable crea un alias para esa sub-lista. Para mejor comprensin, ver la figura 5.11.

Figura 5.11.- Alias a sub-listas.

Como se explic antes, cualquier cambio que se haga por medio de la referencia a la sub-lista se presentar cuando se acceda a la lista principal y

viceversa.

1.9 Otras clases de secuencias


Las listas no son la nica clase de secuencia en Python. T ya has estado en contacto con otras: las cuerdas. Formalmente, una cuerda es una secuencia inmutable de caracteres. La palabra secuencia en esta definicin implica que puede ser indexada y accedida por partes, al igual que una lista, para crear una cuerda nueva:

Tambin, Python tiene una secuencia inmutable denominada tupla. Las tuplas son escritas usando parntesis en lugar de corchetes. Al igual que las cuerdas y las listas, pueden ser indexadas, accedidas por partes y recorrerlas mediante un ciclo:

Existe un pequeo inconveniente: aunque () representa la tupla vaca, una tupla con un elemento se escribe como (x,) en lugar de (x). Esto se hace para evitar ambigedades. Si la coma final no fuera requerida, (5+3) podra significar 8 (bajo las reglas normales de la aritmtica) o la tupla que contiene slo el valor de 8. Este es uno de los pocos casos donde la sintaxis de Python deja algo que desear Una vez que una tupla es creada, no puede modificarse.

Sin embargo, los objetos dentro de ella s pueden modificarse:

Esto es porque se han empleado expresiones imprecisas para decir que algo est dentro de una tupla. Podra ser ms preciso decir esto: Las referencias contenidas en una tupla no pueden ser cambiadas despus de que ha sido creada, aunque los objetos referidos por ellas podran cambiar. A menudo, los principiantes en Python preguntan por qu existen las tuplas. La respuesta es que ellas hacen a algunas operaciones ms eficientes y a otras

ms seguras. No profundizaremos lo suficiente en este libro para explicar lo anterior, pero, las exploraremos posteriormente en el captulo 9, Conjuntos y diccionarios.

1.10 Archivos como listas


La mayora de los datos estn almacenados en archivos, los cuales son slo secuencias ordenadas de bytes. Estos bytes podran representar caracteres, pixeles o cdigos postales. Lo importante es que estn en un orden particular, lo que significa que las listas son, usualmente, una manera natural de trabajar con ellos. Con la finalidad de leer datos de un archivo, primero debemos abrirlo, usando la funcin integrada open de Python:

El primer argumento de open es una cuerda que contiene el nombre del archive. El segundo, indica un modo. Las tres opciones son r para lectura, w para escritura y a para agregado. (La diferencia entre escritura y agregado es que la escritura a un archivo borra cualquier cosa que contenga, mientras que el agregado adiciona datos nuevos al final). open no genera como resultado el contenido del archivo. En lugar de ello, regresa un objeto archivo cuyos mtodos permiten al programa acceder al contenido del archivo. El ms fundamental de estos mtodos es read. Cuando es invocado sin algn argumento, lee todos los datos del archivo y los regresa como una cuerda de caracteres. Si proporcionamos a read un argumento entero positivo, leer, a lo mximo, esa cantidad de caracteres. Esto es til cuando estamos trabajando con archivos muy grandes. En ambos casos, el mtodo regresa una cuerda vaca cuando no hay ms datos. Aunque read nos proporciona acceso a los bytes de un archivo, usualmente,

empleamos mtodos de ms alto nivel para procesar lnea por lnea. Para hacer esto, podemos emplear el mtodo del objeto archivo readline, el cual lee la siguiente lnea de texto del archivo. Una lnea est compuesta de todos los caracteres que se encuentran antes de un caracter final de lnea, el cual tambin se incluye en ella (ver la seccin 3.3, Cuerdas multilneas). Al igual que read, readline regresa una cuerda vaca cuando no hay ms datos en el archivo. El otro comentario acerca de readline es que Python lo invoca,

automticamente, por nosotros cuando un objeto archivo es empleado en un ciclo for. Asume que los siguientes datos se encuentran en un archivo planetas.txt: Mercurio Venus Tierra Marte Jpiter Saturno Urano Neptuno Este fragmento de programa abre ese archivo y muestra la longitud de cada lnea:

Observa cuidadosamente la ltima lnea de la salida. Existen slo siete caracteres para Neptuno, pero, el programa est reportando que la lnea tiene ocho. La razn es que cada lnea que leemos del archivo tiene un

carcter final de lnea al final. Podemos deshacernos de l, usando string.strip, el cual regresa una copia de una cuerda con los espacios, al inicio y al final, eliminados (esto incluye caracteres de espacios, tabuladores y de nueva lnea):

Este ejemplo muestra el resultado de aplicar strip a una cuerda con espacios al inicio y al final de una cuerda:

Observa que el espacio dentro de la cuerda no es afectado: string.strip slo toma espacios en blanco que se encuentran al inicio y al final de la cuerda. Con el uso string.strip, ahora podemos generar el resultado correcto cuando leamos datos de nuestro archivo:

1.10.1

Argumentos de lneas de comando

Hemos dicho que el archivo planetas.txt contiene los nombres de los planetas. Para terminar el ejemplo, regresemos a su lectura, pero, hacindolo slo para un rango de lneas. Proveeremos los nmeros de lnea inicial y final cuando se ejecute el programa. Por ejemplo, podramos desear leer las tres primeras lneas en un momento y leer de las lneas 2 a la 4 en otro. Podemos hacer esto mediante el uso de argumentos de lneas de comandos. Cuando ejecutamos un programa, podemos enviar argumentos a l, de forma muy parecida a cuando invocamos una funcin o un mtodo. Estos valores se almacenan en una variable especial del mdulo del sistema sys, denominada argv, la cual es slo una lista de los argumentos (recibidos como cuerdas). sys.argv[0] siempre contiene el nombre del programa en Python que est siendo ejecutado. En este caso es LeeNombresPlanetas.py. El resto de los argumentos de lnea de comandos estn en sys.argv[1], sys.argv[2] y as sucesivamente. Entonces, aqu est un programa que lee todos los datos de un archivo y despliega las lneas que se encuentran en el rango indicado por los argumentos 1 y 2:

1.11 Comentarios
El programa anterior de lectura de lneas es uno de los ms grandes que hemos visto hasta la fecha tan grande, de hecho, que hemos tenido que agregar comentarios y cuerdas de documentacin. La cuerda de

documentacin es, principalmente, para la gente que desea hacer uso del programa, describe lo que el programa hace, pero, no cmo lo hace. Por el otro lado, los comentarios son escritos para el beneficio del los desarrolladores futuros. Cada comentario inicia con el carcter # y se alarga hasta el final de la lnea. Podemos escribir lo que deseemos en los comentarios, porque Python los ignora por completo. He aqu algunas reglas para realizar buenos comentarios: Asume que los lectores conocen tanto de Python como t (por ejemplo, no expliques qu son las cuerdas o qu realiza un estatuto de asignacin). Muchos programadores dejan comentarios, que comienzan con frases como Por hacer o Por resolver, en el cdigo para acordarse qu es lo que necesitan escribir o arreglar. Si necesitaste pensar mucho cuando escribiste un fragmento de cdigo, deberas escribir un comentario tal que la siguiente persona que se acerque al cdigo no tenga que pensar tanto otra vez. En lo particular, si desarrollas un programa o funcin escribiendo una descripcin puntual en espaol, y a parir de ah vas trabajando para que esos puntos se vayan haciendo ms y ms especficos hasta llegar al cdigo, entonces, deberas dejar los puntos originales como comentarios. (Discutiremos este estilo de desarrollo posteriormente en el captulo 10,

Algoritmos). Similarmente, si un error fue difcil de encontrar o si su determinacin fue complicada, deberas escribir un comentario que explique esto. Si no

lo haces, el siguiente programador que trabaje con esa parte del programa podra pensar que el cdigo es innecesariamente complicado y deshacer el arduo trabajo que has realizado. Por otra parte, si necesitas una cantidad considerable de comentarios para explicar lo que hace un fragmento de cdigo, debera depurar el cdigo. Por ejemplo, si tienes que recordar el propsito de quince listas empleadas en una funcin, deberas dividir la funcin en piezas ms pequeas, donde cada una de ellas slo tenga que trabajar con pocas listas. Un comentario no pertinente es peor que la ausencia de comentarios, de manera que si cambiaste un fragmento de software, lee los comentarios relacionados con l y, si es necesario, modifcalos para que conserven su pertinencia.

1.12 Resumen
En este captulo hemos aprendido lo siguiente: Las listas son usadas para dar seguimiento a cero o ms objetos. Los elementos o tems son los objetos que se encuentran en una lista y son referenciados por medio de ndices que se encuentran en el rango que va de 0 hasta el nmero total de tems menos uno. Las listas son mutable, lo que significa que sus contenidos pueden ser modificados. Pueden contener cualquier tipo de datos, incluyendo otras listas. El acceso a pedazos de lista es empleado para crear listas nuevas que tienen los mismos valores o un subcojunto de valores de la lista original. Cuando dos variables referencian al mismo objeto, se dicen que actan como alias. Las tuplas son otra clase de secuencia de Python. Son similares a las

listas, excepto que son inmutable inmutables. Cuando los archivo archivos son abiertos y ledos, sus contenidos son, comnmente, almacenados en una lista de cuerdas.

1.13 Ejercicios
He aqu algunos ejercicios que puedes resolver por tu cuenta: 1. Asigna una lista que contiene los nombres y los nmeros atmicos de los nmeros seis elementos de la familia de los alcalinotrreos berilio (4), magnesio (12), calcio (20), estroncio (38), bario (56) y radio (88) a una variable denominada MetalesAlcalinoterreos La lista debe ser anidada. MetalesAlcalinoterreos. 2. Cules son los valores de los ndices que hacen referencia al nmero atmico del radio? Escribe tu respuesta de dos maneras. La primera es empleando ndices positivos, la segunda, usando ndices negativos. 3. Cul funcin te dira cuntos elementos tiene la lista que est asignada a MetalesAlcalinoterreos alesAlcalinoterreos?. 4. Escribe un fragmento de p programa que genere como resultado el nmero atmico ms alto en MetalesAlcalinoterreos. (Sugerencia, usa uno de los mtodos de listas que se proporcionan en la figura 5.5). 5. Cul es la diferencia entre print a y print a,? 6. Escribe un ciclo for que imprima los valores de los tems de la lista for ExpectativasDeVida debiendo imprimir cada nombre de pas y su ExpectativasDeVida, expectativa de vida en una lnea. El contenido de esta lista se muestra a continuacin:

7. Segn el Censo de Poblacin y Vivienda de 2010 del Instituto Nacional de Estadstica y Geografa, la poblacin para ese ao de los municipios de Quintana Roo es la que se muestra en la tabla siguiente:
Municipio Cozumel Felipe Carrillo Puerto Othn P. Blanco Benito Jurez Jos Mara Morelos Lzaro Crdenas Solidaridad Tulum Poblacin 79579 75074 244616 660023 36179 25336 159012 28223

Elabora un programa que haga lo siguiente: Cree una lista anidada con estos datos, asignada a la variable PoblacionMunicipios. Por cada municipio debe almacenarse el nombre y su poblacin. Emplear un estatuto for que recorra la lista para que imprima los datos de cada municipio en una lnea. Emplear un estatuto for para recorrer la lista y que vaya sumando la poblacin de cada municipio. Esa suma debe asignarse a la variable PoblacionTotal y debe asignrsele el valor de cero antes del ciclo. Imprimir el valor la variable PoblacionTotal

El programa deber tener cuerda de documentacin y los comentarios apropiados. 8. Crear una lista de temperaturas en grados Celsius con los valores 25.2, 16.8, 31.4, 23.9, 28, 22.5 y 19.6, asignndola a la siguiente variable: TemperaturasEnCelsius.

9. Usa uno de los mtodos de lista para ordenar ascendentemente los tems de la variable TemperaturasEnCelsius. 10.A partir de los items de TemperaturasEnCelsius crea dos listas nuevas, TemperaturasTempladas y TemperaturasCalidas, las cuales deben estar por debajo y por encima de los 20 grados Celsius, respectivamente. 11.Empleando la aritmtica de listas, combina los tems de las listas TemperaturasTempladas y TemperaturasCalidas en una lista nueva denominada TemperaturasJuntas. 12.Escribe un ciclo for para que convierta los valores de los tems de TemperaturasEnCelsius en grados Fahrenheit y para que almacene los resultados en una lista llamada TemperaturasEnFahrenheit. El contenido de TemperaturasEnCelsius no debe modificarse. 13.Dibuja un modelo de memoria que muestre el efecto de los siguientes estatutos:
Valores = [0, 1, 2] Valores[1] = Valores

14.Qu pasa cuando ordenas una lista que contiene una mezcla de nmeros y cuerdas, tal como [1, a, 2, b]? Es esto consistente con las reglas proporcionadas en el captulo 2, Cuerdas y con el captulo 6, Haciendo elecciones, sobre cmo actan los operadores de comparacin, tal como <, sobre los nmeros y las cuerdas? Est haciendo lo correcto Python o algn otro comportamiento podra ser ms til?

Você também pode gostar