27
Secuencias en Python Introducción a la Computación Clase 11 Patricia Borensztejn

Secuencias en Python - dc.uba.ar · Una cadena es una secuencia •En Python tenemos los tipos de datos –Escalares: enteros, flotantes –Secuencias: •sucesión de elementos que

  • Upload
    buiminh

  • View
    219

  • Download
    2

Embed Size (px)

Citation preview

Secuencias en Python

Introducción a la Computación

Clase 11

Patricia Borensztejn

Una cadena es una secuencia

• En Python tenemos los tipos de datos

– Escalares: enteros, flotantes

– Secuencias:

• sucesión 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 evolución.

• 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

• También 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, también trabajan sobre listas.

• Ejemplo: operador len,+,*

Concatenación y Asignación en Listas

• La concatenación no modifica la lista original, crea una nueva zona de memoria.

• La asignación copia el puntero

Indexación

• Podemos utilizar indexación con números 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.

• También 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 asignación) 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 evalúa 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 MUTABLES. >>> a=["H","o","l","a"]

>>> 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:

• Entonces:

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

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 versión simplificada

Agregar elementos a la lista

• Usando el operador + (concatena dos listas)

• Usando el método append

• La diferencia entre ambas es que append añade los nuevos elementos a la lista, en cambio la concatenación 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 vacía) , y crece en tiempo de ejecución… conclusión: la lista es una estructura dinámica!!!!!!

Lectura de listas por teclado

• Usando el operador de concatenación, o bien el método append o bien, creando una lista inicializada a cero con todos los elementos.

• El operador * (recordemos) es de repetición.

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] elemento situado en el índice index de la secuencia

secuencia[ind1:ind2] elementos desde el índice ind1 hasta el índice ind2

secuencia * n la secuencia se repite n veces

secuencia1 + secuencia2 concatena las secuencias secuencia1 y secuencia2

objeto in secuencia comprueba si objeto es un miembro de secuencia

objeto not in secuencia comprueba si objeto no es un miembro de secuencia

Funciones Pre-Definidas

list (secuencia) convierte la secuencia a un tipo lista

str (objeto) convierte el objeto a un tipo string

tuple (secuencia) convierte la secuencia a un tipo tupla

len (secuencia)

devuelve la longitud (numero de elementos) de la secuencia

max (secuencia) devuelve el elemento mas grande de la secuencia

min (secuencia) devuelve el elemento menor de la secuencia

De cadenas a listas y viceversa

Continuará…. Próximamente en esta misma sala….