Secuencias, Tuplas y Listas - Apunte de Cátedra (PDF)

Summary

Este documento es un apunte de cátedra sobre secuencias, tuplas y listas en Python. Explica los conceptos básicos y tipos de secuencias, su manejo y ejemplos.

Full Transcript

Secuencias, Tuplas y Listas Unidad 4 Apunte de cátedra Pensamiento Computacional (90) Cátedra: Balbiano Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA 1. Tipos de Estructuras de Datos 2 Secuencias, Tuplas y Listas...

Secuencias, Tuplas y Listas Unidad 4 Apunte de cátedra Pensamiento Computacional (90) Cátedra: Balbiano Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA 1. Tipos de Estructuras de Datos 2 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA 1.1. Secuencias (type sequence) 1.1.1. Concepto de Secuencia Una secuencia es una serie de elementos que se suceden unos a otros y guardan relación entre sí. Un ejemplo de secuencia es la sucesión de Fibonacci. 1.1.2. Secuencias en Python Una secuencia en Python es un grupo de elementos con una organización interna; que se alojan de manera contigua en la memoria. 1.2. Tipos de Secuencias en Python Listas Tuplas String Rangos 1.2.1. Rangos (range) Los Rangos son un tipo de dato que representa una secuencia de números inmutable. Para crear secuencias numéricas utilizamos la función range que nos brinda Python, que se puede usar de diferentes formas: range(fin) : Nos crea una secuencia numérica desde el 0 hasta ‘fin’, el número que le indiquemos. range(comienzo, fin) : Nos crea una secuencia numérica que va desde ‘comienzo’ hasta ‘fin’. range(comienzo, fin, paso) : Nos crea una secuencia numérica que va desde ‘comienzo' hasta ‘fin’ y va aumentando en la cantidad que le indiquemos en ‘paso’. Ejemplos: range(20) : Crea una secuencia que va de 0 al 19 (inclusives). range(10, 20) : Crea una secuencia que va del 10 al 19 (inclusives). rango(10, 20, 2) : Crea una secuencia que contiene los números [10, 12, 14, 16, 18] Observaciones: Se crean en un intervalo de valores enteros. Los números de comienzo, fin y paso pueden ser negativos. El valor de ‘paso’ es 1 a menos que se indique lo contrario. 1.2.2. Cadenas de Texto (String) Un string es un tipo de secuencia que sólo admite caracteres como elementos. Por eso podemos definir a un string como un conjunto de caracteres que se almacenan de manera contigua y tienen una organización interna. ¿Cómo se guarda internamente una secuencia (sequence)? 3 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA txt='Hola a todos' Internamente se almacenará como 12 caracteres contiguos en la memoria: txt H o l a a t o d o s Podemos observar que el orden de los caracteres importa. El primer caracter de txt es 'H' y el último 's'. Las secuencias enumeran sus posiciones de 0 en adelante. Es decir que el primer elemento ocupa la posición 0 (H), el segundo la 1 (o), y así sucesivamente. txt H o l a a t o d o s 0 1 2 3 4 5 6 7 8 9 1 1 1.2.3. Tuplas (type tuple) Otra tipo de secuencia bastante empleada y muy sencilla de manejar son las tuplas. Las tuplas son una secuencia inmutable (no se pueden editar) de objetos que pueden ser de cualquier tipo, a diferencia de los string que sólo pueden tener caracteres. Es decir que las tuplas son Estructuras de Datos Genéricas, porque con guardar sólo caracteres en diferentes cajoncitos de mi cajonera no alcanza: puede que quisiera guardar cosas diferentes en cada “cajón”, en cada espacio o posición de la tupla, incluso otras estructuras. Una tupla se escribe entre ( ), y sus elementos van separados por coma. Ejemplos de tuplas: (8,) () (1,2, 'hola') ((a,2),b) También se pueden escribir sin los paréntesis (salvo que estén dentro de otra estructura de datos). El último ejemplo se puede escribir como: (a,2),b Y 2,3,4,10 También es una tupla (8,) 4 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA Observación: (8,) es diferente de (8) Es por la manera que tiene Python de saber qué es una tupla; y no la expresión aritmética cuyo valor es 8. Es algo importante, los tipos de datos son diferentes, es decir, (8) es un entero y (8,) es una tupla, por lo que uno permite operaciones que el otro no, y viceversa. A diferencia de los string y los tipos de datos que vimos hasta acá, con las tuplas tenemos la limitación de no poder modificar su contenido ni su tamaño. Para cualquier modificación que se requiera, será necesario copiarla modificada en otra tupla. Y esto es porque son Estructuras de Datos Inmutables: una vez que se definen, no puedo cambiarlas. Entonces, si intentamos hacer una asignación a un elemento de una tupla, nos saltará un error. Por ejemplo, si tenemos la tupla: a = (8, 2, 5) a = 1 Esto nos va a tirar un error cuando intentemos ejecutar el programa. ¿Cómo modificar una tupla? Por ejemplo: a=(1,2) Si quisiera obtener una tupla con dos repeticiones más de esos elementos, podría aplicarle el operador repetición: a=a*3 Por lo tanto, si quiero modificar el contenido original y que contenga las repeticiones debo pisarlo, es decir, asignar la nueva tupla. Mostraremos un uso práctico de tuplas para generalizar la construcción de menús de opciones: def menu(opciones): ''' arma menú de opciones y devuelve selección entera recibe tupla con opciones de menú''' print('Selecciona una opción') for i in range(1,len(opciones)): print(i,'-',opciones[i]) opc=int(input()) while opc not in range(1,len(opciones)): opc=int(input()) return opc quesos=('','cheddar','dambo','muzzarela','brie','cremoso','sin queso') panes=('','semillas','árabe','centeno','pebete','francés') carnes=('','hamburguesa','jamón cocido','jamón crudo','lomito','salchicha','mortadela','veggie') salsas=('','mayonesa','guacamole','ketchup','salsa golf','barbacoa', 'ranch','sin salsa') 5 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA acomp=('','tomate','lechuga','pepinillos','verduras cocidas', 'berenjena escabeche','sin extras') print('Armá tu sandwich') op1=menu(panes) op2=menu(carnes) op3=menu(quesos) op4=menu(acomp) op5=menu(salsas) print('Tu pedido de sandwich de pan',panes[op1],'saldrá pronto') print('Detalle:',carnes[op2],quesos[op3],acomp[op4],salsas[op5],sep='\n') 1.2.4. Listas (type list) Python hace una gran división en sus clases de objetos estructurados con respecto a la posibilidad que tiene cada una de ellos de cambiar dinámicamente, en partes. Aprenderemos a usar una secuencia súper flexible y potente para organizar datos: la lista. Las listas son una secuencia genérica mutable, lo que marca una gran diferencia respecto a las tuplas. Son secuencias, por lo tanto, la organización interna importa y admiten, como todas las secuencias, un acceso directo (a el o los elementos que deseo); son mutables, por ello pueden cambiar de tamaño y de contenido total, o por partes, y son heterogéneas, por lo que pueden contener cualquier tipo de objeto (otra lista, por ejemplo). Una lista se escribe entre [ ] Por ejemplo: [1,2] [True,’Hola’,56,(1,2)] Y se puede asignar como cualquier objeto de datos a=[1,2,3] Cuando precisamos una lista vacía, la creamos de la siguiente manera: lis=[] Para tener en cuenta: a=[1,2,3] b=[1,2,3] No es igual a: a=[1,2,3] b=a 6 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA En el primer caso, si bien a y b tienen el mismo tamaño y los mismos valores, son dos variables completamente diferentes. En cambio, en el segundo caso la variable b decimos que es una referencia a la variable a, lo que implica que si modificamos una de las dos, el cambio se ve reflejado en ambas variables. Si efectivamente queremos tener dos estructuras separadas para que al modificar los datos de una se preserven los datos originales en otra, debemos forzar su copia. Una forma práctica de hacerlo es emplear el método copy() b=a.copy() Ahora sí copiará los contenidos de la lista a en otra parte de la memoria. La operación: lis=[1,2,'ya'] lis=3 A diferencia de con las tuplas, es válida. Si hacemos: print(lis) la salida será [1,2,3] A lis podremos agregarle elementos empleando métodos que realizan dos trabajos: agregan un cajoncito a la estructura y permiten colocar algo dentro (append(), insert(),extend()) o quitárselos también (pop(), remove(),clear()). lis.append(4) print(lis) #la salida sera [1,2,3,4] Observación: El método append() modifica directamente lis y no requiere de volver a asignar a la lista. Si bien esa operación de reasignación es válida, estaríamos guardando en la variable lis un objeto nulo (None), que es lo que el método append() devuelve: nada. Y es que append() sólo modifica, no retorna ningún valor. Y por definición en Python, todas las funciones y métodos que no devuelven nada (no hay return en su cuerpo) devuelven la constante nula None. Existe una gran variedad de trabajos necesarios para realizar sobre listas de objetos. Y también una buena oferta de métodos predefinidos en la clase para simplificar la tarea. Lo vamos a ver en la siguiente parte del apunte. 1.3. Operadores de Secuencias Para todos los tipos de secuencias que vimos, tenemos definidos ciertos operadores que van a ser nuestras herramientas para programar. x in s Devuelve True si x pertenece a s, False, en caso contrario s+t Concatena la secuencia s y la t en ese orden 7 Secuencias, Tuplas y Listas APUNTE DE CÁTEDRA s*n Concatena n veces la secuencia s s[i] Referencia el elemento de la posición i de la secuencia s s[-k] Referencia el elemento que está k posiciones antes del final s[i:j] Referencia la porción de la secuencia s que va del elemento i al j-1 s[i:j:k] Referencia la porción de la secuencia s que va del elemento i al j-1, con paso k >,=,

Use Quizgecko on...
Browser
Browser