secuencias.pdf

Upload: edgar-pimentel

Post on 28-Feb-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Secuencias.pdf

    1/27

    Secuencias en Python

    Introduccin a la Computacin

    Clase 11Patricia Borensztejn

  • 7/25/2019 Secuencias.pdf

    2/27

    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.

  • 7/25/2019 Secuencias.pdf

    3/27

    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.

  • 7/25/2019 Secuencias.pdf

    4/27

    Definiendo una lista

    Se definen utilizando el corchete y los elementosse separan con comas

    Ejemplos:

    l = *22, True, una lista, *1, 2]]Donde les una variable de tipo lista que contiene cuatroelementos:

    l[0] es el entero 22

    l[1] es el booleano Truel[2] es la cadena una lista

    l[3] es otra lista formada por los enteros 1 y 2

  • 7/25/2019 Secuencias.pdf

    5/27

    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 aes un puntero a la lista

  • 7/25/2019 Secuencias.pdf

    6/27

    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,+,*

  • 7/25/2019 Secuencias.pdf

    7/27

    Concatenacin y Asignacin en Listas

    La concatenacin no modifica la lista original,

    crea una nueva zona de memoria.

    La asignacin copia el puntero

  • 7/25/2019 Secuencias.pdf

    8/27

    Indexacin

    Podemos utilizar indexacin con nmerosnegativos.

    Operador de corte

  • 7/25/2019 Secuencias.pdf

    9/27

    Operador de Corte: hace una copia

  • 7/25/2019 Secuencias.pdf

    10/27

    Iteradores : for in

  • 7/25/2019 Secuencias.pdf

    11/27

    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.

  • 7/25/2019 Secuencias.pdf

    12/27

    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 operadoris permite averiguar si dos

    referencias apuntan al mismo objeto.

  • 7/25/2019 Secuencias.pdf

    13/27

    Cuando tengamos dudas

    Podemos preguntar

    Aunque la respuesta nos parta la cabeza. (loque ocurre es que cuando Python evala

    expresiones asigna memoria.)

  • 7/25/2019 Secuencias.pdf

    14/27

    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.

  • 7/25/2019 Secuencias.pdf

    15/27

    Inmutabilidad de los escalares y de las

    cadenas

    Si modificamos el valor de un objeto

    inmutable, se crea una nueva zona de

    memoria

  • 7/25/2019 Secuencias.pdf

    16/27

    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']

    >>>

  • 7/25/2019 Secuencias.pdf

    17/27

    La verdad sobre las listas (aunque no la

    querramos saber)

    La lista a se almacena asi:

    Entonces:

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

  • 7/25/2019 Secuencias.pdf

    18/27

    La verdad sobre las listas (aunque no la

    querramos saber)

    Al modificar un valor de la lista, lo que sucede esque se crea una nueva zona de memoria con elnuevo valor. Lo que se escribe dentro de la listaes la referencia al nuevo valor.

    A la derecha mostramos la versin simplificada

  • 7/25/2019 Secuencias.pdf

    19/27

    Agregar elementos a la lista

    Usando el operador +(concatena dos listas)

    Usando el mtodo append

    La diferencia entre ambas es que append aade losnuevos elementos a la lista, en cambio laconcatenacincopia primero la lista original sobre unanueva zona de memoria. Es decir, append es maseficiente

  • 7/25/2019 Secuencias.pdf

    20/27

    Ejemplo con listas: Lista de primos

    Lo interesante es que comenzamos con una lista cuyalongitud desconocemos, por lo tanto comienza sinelementos (lista vaca) , y crece en tiempo de ejecucin

    conclusin: la lista es una estructura dinmica!!!!!!

  • 7/25/2019 Secuencias.pdf

    21/27

    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.

  • 7/25/2019 Secuencias.pdf

    22/27

    Borrado de elementos de una lista

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

    Debemos ser muy cuidadosos cuando usamos elborrado mientras recorremos la lista

  • 7/25/2019 Secuencias.pdf

    23/27

    Operador in

    Es el operador de pertenencia a una lista o a

    una cadena.

  • 7/25/2019 Secuencias.pdf

    24/27

    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 + secuencia2concatena las secuencias

    secuencia1 y secuencia2

    objeto in secuencia comprueba si objeto es unmiembro de secuencia

    objeto not in secuenciacomprueba si objeto no es un

    miembro de secuencia

  • 7/25/2019 Secuencias.pdf

    25/27

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

  • 7/25/2019 Secuencias.pdf

    26/27

    De cadenas a listas y viceversa

  • 7/25/2019 Secuencias.pdf

    27/27

    Continuar. Prximamente en estamisma sala.