Secuencias en Python

Anuncio
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
>>> 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 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….
Descargar