PORFIS DI :

PORFIS DI :

¿ESTAS A FAVOR DE LA LEGALIZACION DEL ABORTO EN GUATE?

LIBERTAD 15 DE SEPTIEMBRE DE 1821

LIBERTAD 15 DE SEPTIEMBRE DE 1821
DIA DE LA INDEPENDENCIA DE GUATEMALA

bye, bye, bye!!!

♫♪☼○○Q ONDA!!!♫♪♫♪

♥☼♫♂◘○○BIENVENIDOS AL BLOG ROCKER CLASS♫☼♫♂♪

♥♦♫TAN LINDO!!!

♥♦♫TAN LINDO!!!
♪♥♦APRECIENLO CHICAS♥♫♥

martes, 22 de septiembre de 2009

PROGRAMACION RESUMEN DE LISTAS 2

CAPITULO 5.2.4
MODIFICACION DE ELEMENTOS DE LISTAS
Hasta el momento hemos aprendido a crear listas y a consultar su contenido, bien accediendo a uno cualquiera de sus elementos (mediante indexación), bien recorriendo todos sus elemento (con un bucle for-in). En este apartado veremos cómo modificar el contenido de las listas.
Podemos asignar valores a elementos particulares de una lista gracias al operador de indexación.
Cada celda de una lista es, en cierto modo, una variable autónoma: podemos almacenar en
ella un valor y modificarlo a voluntad.


>>> a = [1, 2, 3]

>>> a[1] = 10

>>> a

[1, 10, 3]


CAPITULO 5.2.5


MUTABILIDAD, INMUTABILIDAD Y REPRESENTACION DE LA INFORMACION EN MEMORIA

Python procura no consumir más memoria que la necesaria. Ciertos objetos son inmutables, es decir, no pueden modificar su valor. El número 2 es siempre el número 2. La cadena ’Hola’ es siempre la cadena ’Hola’. Escalares y cadenas son objetos inmutables. Python almacena en memoria una sola vez cada valor inmutable. Si dos o más variables contienen ese valor, sus referencias apuntan a la misma zona de memoria.


>>> a = 1 + 1

>>> b = 2 * 1

>>> c = ’Python’

>>> d = c

>>> e = ’Py’ + ’thon’


Que las cadenas Python sean inmutables tiene efectos sobre las operaciones que podemos efectuar con ellas. La asignaci´on a un elemento de una cadena, por ejemplo está prohibida, así que Python la señala con un ((error de tipo)) (TypeError):

>>> a = ’Hola’

>>> a[0] = ’h’

Traceback (innermost last):

File "", line 1, in ?

TypeError: object doesn’t support item assignment


Las listas se comportan de forma diferente: a diferencia de las cadenas, son mutables.


Una lista expresada explícitamente, (como [1, 2, 1]), Python ha reservado nueva memoria, aunque exista otra lista de id´entico valor. As´ı pues, a = [1, 2, 1] y c = [1, 2, 1] han generado sendas reservas de memoria y cada variable apunta a una zona de memoria diferente. Como el contenido de cada
celda ha resultado ser un valor inmutable (un entero), se han compartido las referencias a los mismos.

Modifiquemos ahora el contenido de una celda de una de las listas:

>>> d[2] = 3


CAPITULO 5.2.6

ADICION DE ELEMENTOS A UNA LISTA


Podemos añadir elementos a una lista, esto es, hacerla crecer.

¡Claro!, el operador de concatenación trabaja con dos listas, no con una lista y un entero, así que el elemento a añadir debe formar parte de una lista. . . aunque ésta sólo tenga un elemento:


>>> a = a + [4]

>>> a

[1, 2, 3, 4]


Existe otro modo efectivo de a˜nadir elementos a una lista: mediante el método append (que en inglés significa ((añadir))). Observa como usamos append:


>>> a = [1, 2, 3]

>>> a.append(4)

>>> a

[1, 2, 3, 4]


Hay una diferencia fundamental entre usar el operador de concatenación + y usar append:
la concatenación crea una nueva lista copiando los elementos de las listas que participan como
operandos y append modifica la lista original.


¿Por qué complicarse la vida con append, cuando la concatenación hace lo mismo y nos asegura trabajar con una copia de la memoria? Por eficiencia: es más eficiente hacer append que concatenar. Concatenar supone crear una lista nueva en la que se copian todos y cada uno de los elementos de las listas concatenadas.

CAPITULO 5.2.7
LECTURA DE LISTAS POR TECLADO

Hasta el momento hemos aprendido a construir listas de diferentes modos, pero nada hemos dicho acerca de cómo leer listas desde el teclado. La función que lee de teclado es raw_input, ¿funcionará también con listas?


>>> lista = raw_input(’Dame una lista: ’)

Dame una lista: [1, 2, 3]

>>> lista

’[1, 2, 3]’


¿Ha funcionado? No. Lo que se ha leído es una cadena, no una lista. Se puede advertir en
las comillas que rodean el texto de la respuesta. Podemos cerciorarnos accediendo a su primer
elemento: si fuera una lista, valdr´ıa 1 y si fuera una cadena, ’[’.


>>> lista[0] 
’[’


De todos modos, era previsible, pues ya dijimos en su momento que raw_input devolvía
una cadena. Cuando queríamos obtener, por ejemplo, un entero, ((encerrábamos)) la llamada a
raw_input con una llamada a la función int y cuando queríamos un flotante, con float. ¿Habrá
alguna función similar para obtener listas? Si queremos una lista, lo lógico sería utilizar una
llamada a list, que en inglés significa lista:


>>> lista = list(raw_input(’Dame una lista: ’))

Dame una lista: [1, 2, 3]

>>> lista

[’[’, ’1’, ’,’, ’ ’, ’2’, ’,’, ’ ’, ’3’, ’]’]


¡Oh, oh! Tenemos una lista, sí, pero no la que esperábamos:


La función list devuelve una lista a partir de una cadena, pero cada elemento de la lista es un
car´acter de la cadena (por ejemplo, el 2 que ocupa la posición de índice 5 no es el entero 2,
sino el carácter 2). No se interpreta, pues, como hubiéramos deseado, es decir, como esta lista
de números enteros.


Para leer listas deberemos utilizar un método distinto. Lo que haremos es ir leyendo la lista
elemento a elemento y construir la lista paso a paso. Este programa, por ejemplo, lee una lista
de 5 enteros:


lista = []

for i in range(5):

elemento = int(raw_input(’Dame un elemento:’))

lista = lista + [elemento]


Mejor aún: si usamos append, evitaremos que cada concatenación genere una lista nueva copiando
los valores de la antigua y añadiendo el elemento recién leído.


lista = []

for i in range(5):

elemento = int(raw_input(’Dame un elemento:’))

lista.append(elemento)


Existe un método alternativo que consiste en crear una lista con 5 celdas y leer después el

valor de cada una:


lista = [0] * 5

for i in range(5):

elemento[i] = int(raw_input(’Dame un elemento:’))


Supongamos que deseamos leer una lista de enteros positivos cuya longitud es desconocida.

¿Cómo hacerlo? Podemos ir leyendo números y añadiéndolos a la lista hasta que nos introduzcan

un número negativo. El número negativo indicará que hemos finalizado, pero no se añadirá a

la lista:



lista = []

numero = int(raw_input(’Dame un número: ’))

while numero >= 0:

lista.append(numero)

numero = int(raw_input(’Dame un número: ’))






No hay comentarios:

Publicar un comentario

QUE BANCO CONTABILIZA EL DINERO QUE SE ENCUENTRA EN CIRCULACION EN GUATEMALA?

QUIEN FUE EL PRIMER PRESIDENTE DE GUATEMALA?

¿HAY QUE ANIMAR A LOS EMPLEADOS A HACER SUGERENCIAS QUE MEJORESN EL LUGAR DE TRABAJO O EL SERVICIO A LOS CLIENTES?

¿HAY QUE MOTIVAR A LOS EMPLEADOS A PRESENTAR CUALQUIER IDEA, POR PEQUEÑA QUE SEA?

¿ESTAS DE ACUERDO CON LAS CANDIDATAS QUE GANARON?

¿QUE OBRA TE GUSTO MAS?