You are on page 1of 27

Secuencias en Python

Introduccin a la Computacin Clase 11 Patricia Borensztejn

Una cadena es una secuencia


En Python tenemos los tipos de datos
Escalares: enteros, flotantes Secuencias:
sucesin de elementos que pueden ser accedidos mediante un ndice. Hay: strings, Unicode strings, lists, tuples, bytearrays, buffers, and xrange objects and more and more porque Python es un lenguaje en evolucin. Las cadenas (strings) pertenecen al tipo secuencia.

Secuencias: Listas
El concepto de secuencia es muy potente: podemos definir secuencias de valores de cualquier tipo: enteros, flotantes, cadenas Estas secuencias se llaman listas. Las listas pueden contener elementos de distintos tipos incluso pueden contener listas.

Definiendo una lista


Se definen utilizando el corchete y los elementos se separan con comas Ejemplos:
l = *22, True, una lista, *1, 2]] Donde l es una variable de tipo lista que contiene cuatro elementos: l[0] es el entero 22 l[1] es el booleano True l[2] es la cadena una lista l[3] es otra lista formada por los enteros 1 y 2

Definiendo listas
Tambin podemos definir los elementos de la lista como expresiones: >>> a = [1, 1+1, 6/2] >>> a [1, 2, 3] Python almacena las listas como las cadenas: mediante referencias (punteros). La variable a es un puntero a la lista

Operadores para Listas


Como las listas y las cadenas son ambas del tipo secuencia, los mismos operadores y funciones que trabajan sobre cadenas, tambin trabajan sobre listas. Ejemplo: operador len,+,*

Concatenacin y Asignacin en Listas


La concatenacin no modifica la lista original, crea una nueva zona de memoria. La asignacin copia el puntero

Indexacin
Podemos utilizar indexacin con nmeros negativos.

Operador de corte

Operador de Corte: hace una copia

Iteradores : for in

Comparaciones
Si las listas tienen distinta longitud, son diferentes. Si las listas tienen la misma longitud, se compara elemento a elemento de izquierda a derecha. Tambin funcionan los operadores: <,<=,>,>=. Probarlos para ver como funcionan.

Operador is
Ya hemos visto que a veces dos listas son la misma lista (si usamos la asignacin) y a veces son distintas. (si usamos expresiones) Por ejemplo:

El operador is permite averiguar si dos referencias apuntan al mismo objeto.

Cuando tengamos dudas


Podemos preguntar

Aunque la respuesta nos parta la cabeza. (lo que ocurre es que cuando Python evala expresiones asigna memoria.)

Inmutabilidad de los escalares y de las cadenas


Para ahorrar memoria, Python considera que tanto los valores escalares (2, 3, 4.567, etc) como las cadenas (hola hola) son objetos inmutables.

Inmutabilidad de los escalares y de las cadenas


Si modificamos el valor de un objeto inmutable, se crea una nueva zona de memoria

Algo que no dijimos de las cadenas


Esto no lo podemos hacer:

debido a que las cadenas son INMUTABLES. Las listas, a diferencia de las cadenas, son >>> a=["H","o","l","a"] MUTABLES.
>>> a ['H', 'o', 'l', 'a'] >>> a[0]="h" >>> a ['h', 'o', 'l', 'a'] >>>

La verdad sobre las listas (aunque no la querramos saber)


La lista a se almacena asi:
>>> a=[1,2,1]

Entonces:

La verdad sobre las listas (aunque no la querramos saber)


Al modificar un valor de la lista, lo que sucede es que se crea una nueva zona de memoria con el nuevo valor. Lo que se escribe dentro de la lista es la referencia al nuevo valor. A la derecha mostramos la versin simplificada

Agregar elementos a la lista


Usando el operador + (concatena dos listas) Usando el mtodo append

La diferencia entre ambas es que append aade los nuevos elementos a la lista, en cambio la concatenacin copia primero la lista original sobre una nueva zona de memoria. Es decir, append es mas eficiente

Ejemplo con listas: Lista de primos

Lo interesante es que comenzamos con una lista cuya longitud desconocemos, por lo tanto comienza sin elementos (lista vaca) , y crece en tiempo de ejecucin conclusin: la lista es una estructura dinmica!!!!!!

Lectura de listas por teclado


Usando el operador de concatenacin, o bien el mtodo append o bien, creando una lista inicializada a cero con todos los elementos.

El operador * (recordemos) es de repeticin.

Borrado de elementos de una lista


Se pueden borrar elementos con la sentencia del. Esta sentencia no crea una nueva lista, sino que modifica la anterior.

Debemos ser muy cuidadosos cuando usamos el borrado mientras recorremos la lista

Operador in
Es el operador de pertenencia a una lista o a una cadena.

Operadores de Listas
secuencia[index] secuencia[ind1:ind2] secuencia * n secuencia1 + secuencia2 elemento situado en el ndice index de la secuencia elementos desde el ndice ind1 hasta el ndice ind2 la secuencia se repite n veces concatena las secuencias secuencia1 y secuencia2 comprueba si objeto es un miembro de secuencia comprueba si objeto no es un miembro de secuencia

objeto in secuencia
objeto not in secuencia

Funciones Pre-Definidas
list (secuencia) str (objeto) tuple (secuencia) convierte la secuencia a un tipo lista convierte el objeto a un tipo string

convierte la secuencia a un tipo tupla


devuelve la longitud (numero de elementos) de la secuencia devuelve el elemento mas grande de la secuencia devuelve el elemento menor de la secuencia

len (secuencia)

max (secuencia)

min (secuencia)

De cadenas a listas y viceversa

Continuar. Prximamente en esta misma sala.

You might also like