08 Python - Colecciones de Datos I
08 Python - Colecciones de Datos I
08 Python - Colecciones de Datos I
TUPLAS
En Python, una tupla es un conjunto ordenado e inmutable de elementos del mismo o diferente tipo. Las tuplas
se representan escribiendo los elementos entre paréntesis y separados por comas.
Una tupla puede no contener ningún elemento, es decir, ser una tupla vacía.
A = ()
print (A) ()
len(A) 0
Una tupla puede incluir un único elemento, pero para que Python entienda que nos estamos refiriendo a una tupla
es necesario escribir al menos una coma.
El ejemplo siguiente muestra la diferencia entre escribir o no una coma. En el primer caso Python interpreta la
expresión como un número y en el segundo como una tupla de un único elemento.
A = (3)
print (A) 3
len(A) Error
A = (3,)
print (A) (3,)
len(A) 1
Se puede acceder a cada uno de los datos mediante su índice correspondiente, siendo 0 (cero), el índice del primer
elemento:
mi_tupla = ('cadena de texto', 15, 2.8, 'otro dato', 25)
print (mi_tupla[1]) # Salida: 15
También se puede acceder a una porción de la tupla, indicando (opcionalmente) desde el índice de inicio hasta el
índice de fin:
print (mi_tupla[1:4]) # Devuelve: (15, 2.8, 'otro dato')
Otra forma de acceder a la tupla de forma inversa (de atrás hacia adelante), es colocando un índice negativo:
Listas
Las listas (list) son conjuntos ordenados de datos del mismo o diferente tipo, y no son inmutables, o sea que
se puede modificar su contenido. En otros lenguajes son conocidos como arrays, arreglos, o vectores. Python
permite manipular listas de muchas maneras.
Una lista, cuyo contenido puede modificarse.
Se representan escribiendo los elementos entre corchetes y separados por comas.
Las variables de tipo lista hacen referencia a la lista completa.
lista = [ ]
print(lista) [ ]
nombre = "Pepe"
edad = 25
lista = [nombre, edad]
print(lista) ['Pepe', 25]
Profesora: Mariángeles Glavina
Concatenar listas
Atención: El operador suma (+) necesita que los dos operandos sean listas:
vocales = ["A"]
vocales += ["E"]
print(vocales) ['A', 'E']
También se puede utilizar el método append para añadir elementos al final de una lista:
vocales = ["A"]
vocales.append("E")
print(vocales) ['A', 'E']
Podemos agregar un elemento a una lista en la posición que deseemos aplicando el método insert,
facilitando como parámetro adicional el índice en el que quedará ubicado. El elemento que estaba situado en esa
posición se desplazará un puesto hacia la derecha.
Cada elemento se identifica por su posición en la lista, teniendo en cuenta que se empieza a contar por 0.
Manipular sublistas
De una lista se pueden extraer sublistas, utilizando la notación nombreDeLista [inicio:límite], donde inicio y límite
hacen el mismo papel que en el tipo range(inicio, límite).
Se puede modificar una lista modificando sublistas. De esta manera se puede modificar un elemento o varios a la
vez e insertar o eliminar elementos.
letras = ["A", "B", "C", "D", "E", "F", "G", "H"]
letras[-100:-50] = ["A", "B", "C"] # Añade ["A", "B", "C"] al principio de la lista
print(letras)
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
La palabra reservada del permite eliminar un elemento o varios elementos a la vez de una lista, e incluso la misma
lista.
letras = ["A", "B", "C", "D", "E", "F", "G", "H"] del
letras[4] # Elimina la sublista ['E']
print(letras)
['A', 'B', 'C', 'D', 'F', 'G', 'H']
del letras[1:4] # Elimina la sublista ['B', 'C', 'D']
print(letras)
['A', 'F', 'G', 'H']
del letras # Elimina completamente la lista
print(letras)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in ?
letras
NameError: name 'letras' is not defined
Aunque si se hace referencia a sublistas, Python sí que acepta valores fuera de rango, pero lógicamente no se
modifican las listas.
Para eliminar los elementos de una lista necesitamos recorrer la lista al revés. Si recorremos la lista de principio
a fin, al eliminar un valor de la lista, la lista se acorta y cuando intentamos acceder a los últimos valores se
produce un error de índice fuera de rango, como muestra el siguiente ejemplo en el que se eliminan los valores
de una lista que valen "B":
Profesora: Mariángeles Glavina
['A', 'C']
Traceback (most recent call last):
File "ejemplo.py", line 4, in <module>
if letras[i] == "B":
IndexError: list index out of range
La solución es recorrer la lista en orden inverso, de manera que aunque se eliminen elementos y la lista se
acorte, los valores que todavía no se han recorrido siguen existiendo en la misma posición que al principio.
Eliminar valores de una lista (correcto)
Para saber si un valor está en una lista se puede utilizar el operador in. La sintaxis sería "elemento in lista" y
devuelve un valor lógico: True si el elemento está en la lista, False si el elemento no está en la lista. Por ejemplo,
el programa siguiente comprueba si el usuario es una persona autorizada:
personas_autorizadas = ["Alberto", "Carmen"]
nombre = input("Dígame su nombre: ")
if nombre in personas_autorizadas:
print("Está autorizado")
else:
print("No está autorizado")
Profesora: Mariángeles Glavina
Para saber si un valor no está en una lista se pueden utilizar los operadores not in. La sintaxis sería "elemento not
in lista" y devuelve un valor lógico: True si el elemento no está en la lista, False si el elemento está en la lista.
Por ejemplo, el programa siguiente comprueba si el usuario es una persona autorizada:
Listas
A. Cargar los valores del 1 al 100 en una lista, y mostrar la lista completa, y la lista elemento por elemento
separados por guiones
B. Crear las funciones para el siguiente main (completar con las instrucciones faltantes) que crea una lista de
números aleatorios del 1 al 10, según la cantidad de nros solicitada al usuario. Luego le pide un índice por
teclado (debe estar dentro de la cantidad de valores de la lista) y muestra el valor guardado en la lista bajo ese
índice
cantidad = pedir_cantidad_de_valores()
lista_de_numeros = crear_lista(cantidad)
indice = pedir_indice(cantidad)
mostrar_valor(lista_de_numeros_indice)
mostrar_lista(lista_de_numeros)
C. Crea una tupla con los meses del año. Pide un número al usuario, si el número esta entre 1 y la longitud
máxima de la tupla (incluido), muestra el contenido de esa posición sino muestra un mensaje de error. Utilizar
funciones.
D. Pide un número por teclado y guarda en una lista su tabla de multiplicar hasta el 10. Por ejemplo, si pide el 5 la
lista tendrá: 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 . Luego muestra la tabla con el siguiente formato
1x5=5
2 x 5 = 10
Etc etc
E. Pide números y mételos en una lista, cuando el usuario meta un 0 ya dejaremos de insertar. Por último,
muestra los números ordenados de menor a mayor. (En clase se explicarán los métodos de ordenamiento más
comunes y la función sort() )
G. Crea una lista con números al azar, pide un número por teclado e indica cuantas veces se repite.
H. Crea una lista con números al azar e indica el número con mayor valor y el que menor tenga. (sin usar las
funciones max() y min() )
I. Escriba un programa que permita crear una lista de palabras. Para ello, el programa tiene que pedir un número
y luego solicitar ese número de palabras para crear la lista. Por último, el programa tiene que escribir la lista.
J. Escriba un programa que permita crear una lista de palabras y que, a continuación, pida una palabra y diga
cuántas veces aparece esa palabra en la lista.
K. Escriba un programa que permita crear una lista de palabras y que, a continuación, pida dos palabras y
sustituya la primera por la segunda en la lista.
L. Escriba un programa que permita crear una lista de palabras y que, a continuación, pida una palabra y elimine
esa palabra de la lista.
M. Escriba un programa que permita crear dos listas de palabras y que, a continuación, elimine de la primera lista
los nombres de la segunda lista.
N. Inventen una función para que dada una lista de valores ingresados por el usuario, devuelva la lista invertida.
O. Escriba un programa que permita crear una lista de palabras y que, a continuación, elimine los elementos
repetidos (dejando únicamente el primero de los elementos repetidos).
P. Escriba un programa que permita crear dos listas de palabras y que, a continuación, escriba las siguientes
listas (en las que no debe haber repeticiones):
Q) Diseñar un programa que calcule el grado y los coeficientes correspondientes a un polinomio que resulta de
aplicar el algoritmo de la división de Ruffini. Mostrar el resto de la división. (Ayuda: los datos ingresados deberán
ser el grado del polinomio y el coeficiente independiente del divisor. Los coeficientes ingresados por el usuario se
guardarán en un lista, para poder resolver)
R) a) Diseñen una función que permita crear una tupla con datos de personas ingresados por el usuario con el
siguiente formato:
b) Diseñen una función que permita agregar tuplas a una lista, de manera que se pueda crear una lista de tuplas
con datos de personas
d) Realicen una función que pida un DNI y busque en la lista todos los datos correspondientes a ese dni. Si el DNI
no existe debe informarlo
Escribí una función llamada propagar que reciba un vector con ceros, unos y
menos unos, y devuelva un vector en el que los unos se propagaron a sus vecinos
con 0. Guardalo en un archivo propaga.py.
Por ejemplo:
>>> propagar([ 0, 0, 0,-1, 1, 0, 0, 0,-1, 0, 1, 0, 0])
[ 0, 0, 0,-1, 1, 1, 1, 1,-1, 1, 1, 1, 1]
>>> propagar([ 0, 0, 0, 1, 0, 0])
[ 1, 1, 1, 1, 1, 1]
Bibliografía: