Traballeremos con datos estruturados simples (chamados lineais), pero non tan simples como para que teñan unha estrutura análoga en Scratch: conxuntos, tuplas e diccionarios.
Conxuntos (sets)
O conxunto (set in english) é unha colección de datos non ordenados e que polo tanto non teñen índice (viría a ser unha lista desordenada). Os elementos aparecen ao chou:
Código | Función | Exemplo |
---|---|---|
nome_do_conxunto = {elemento A, elemento B, elemento C,...} | Crea o conxunto cos elementos. Non están ordenados. | nomes_serpe = {'Víbora, 'Cobra', 'Pitón'} |
nome_do_conxunto = set([elementoA,elementoB,elementoC...]) | Crea o conxunto con elementos, a partir dunha lista | nomes_serpe = (['Víbora,'Cobra','Pitón']) |
nome_do_conxunto = set() | Crea un conxunto baleiro (ollo: se poñemos {} a secas creamos un dicionario, non un conxunto) | nomes_serpe = set() |
Un conxunto non pode contener listas, diccionarios, tuplas ou conxuntos, ou sexa, datos ordenados. Pero os elementos pode ser datos simples de distinto tipo: cadenas, números enteros e reais, lóxicos...
Algo máis de conxuntos:
Código | Función | Exemplo |
---|---|---|
nome_do_conxunto = set(range(3)) | Crea un conxunto a partir dun bucle | numeros123 = set(range(3)) |
list({conxunto}) | Convirte un conxunto en lista | lista = list({'ola',2,3}) |
len(nome_do_conxunto) len({elementoA,elementoB...}) |
Lonxitude do conxunto |
a = {'a',3,'d',5} len a #será 4 len({1,2,3} #será 3 |
conxunto.add(elemento) | Engade un novo elemento |
a = {1,3,2} a.add(4) # agora engadimos o 4 |
conxunto.discard(elemento) conxunto.remove(elemento) |
Borra un elemento |
a = {1,3,2,'ola'} a.discard(3) #borramos o 3 a.remove('ola') #borramos 'ola' |
Exercicios:
- Crea un conxunto co teu nome, apelidos e data de nacemento.
- Engade a túa vila de nacemento.
- Borra os teus apelidos e convirte en lista o conxunto.
Se queres profundar en conxuntos podes visitar a páxina Este conxunto está conxuntado?
TUPLAS
A tupla é unha lista de datos que poden ser de distinto tipo (cadeas, números,lóxicos...) e que non pode modificarse. É útil cando queremos que a saída dunha función non sexa un dato simple. As tuplas son datos que gardamos en parénteses cun nome deste xeito:
Código | Función | Exemplo |
---|---|---|
nome_da_tupla = (elemento 0, elemento 1, elemento 2,...) | Almacenar datos de distinto tipo, como unha data, (25, 'Maio', 2018) porque ten datos numéricos e cadeas. | data = (25, 'Maio', 2018) |
nome_da_tupla [índice] | Consultar o valor dunha tupla, o índice comenza por 0 e non por 1 |
data (0) #sería o número 25 data (1) #sería a cadea Maio data (2) #sería o número 2018 |
tupla1 = (elemento 0, elemento 1, tupla2) | Unha tupla pode estar añidada noutra. | tupla1 = (Pepa, Pérez, (10, Abril, 2005)) |
A diferencia importante é que non podemos modificala. Se probamos a escribir tupla [índice_existente] = novo_dato veremos que da unha mensaxe de erro.
Exercicios:
- Crea unha tupla co teu nome, apelidos e data de nacemento. Consulta a tupla imprindo en pantalla o teu nome, o teu apelido...
- Que sucede se escribes un índice maior, que non existe?. Por exemplo na tupla de 3 elementos se escribimos tupla[3]?
- Para que utilizamos a nomenclatura tupla[índice:] ou tupla[:índice]?
Algo máis de tuplas:
Na seguínte táboa amosasos algunhas das operacións que se poden facer coas tuplas:
Operacións | Código | Explicación | Exemplo |
---|---|---|---|
Lonxitude dunha tupla | len(tupla) | Igual que nas listas |
data = (25, 'Maio', 2018) len (tupla) #será 3 |
Tupla baleira | tupla = () | Unha tupla sen contido |
tupla = () len (tupla) será 0 |
Tupla unitaria | tupla = (elemento,) | Unha tupla cun único elemento, pero que non é unha variable |
tupla = (2005) #isto non é unha tupla tupla = (2005,) #isto é unha tupla unitaria |
Empaquetado de tuplas | tupla = variable1, variable2, variable 3,... | Podemos gardar variables en tuplas, simplemente separándoas por comas |
a = Teri b = Miko c = DJ tupla =a,b,c |
Desempaquetado de tuplas |
tupla = ('serpe',' pitón', 15) animal, nome, número = tupla |
Asigna variables a cada compoñente da tupla (lembra que non podemos modificar directamente a tupla). Estas variables non poden chamarse igual e teñen que ser tantas como o número de compoñentes da tupla. |
tupla = (Fátima', 'Hajji', 'DJ') nome,apelido,profesión = tupla print(nome) #dará como resultado Fátima |
Exercicios:
- Facer unha tupla que almacene o tempo en forma de (horas, minutos,segundos). Darlle cando menos 3 valores.
- Facer unha función que sume dous elementos ou tempos distintos. Podes facelo sen ter que converter o dato (por exemplo 75 min non ten por que ser 1 h e 15 min)
- Avanzado: facer unha función que dada unha data almacenada nunha tupla (día,mes,ano) calcule o día seguinte, tendo en conta os cambios de mes. O mes poderá estar con número ou con letras.
DICIONARIOS
Un dicionario é un tipo de dato estruturado que consiste nunha lista nor ordenada de pares de 2 valores, un deles é o valor que queremos almacenar e o outro é a clave para poder consultar o valor. A clave é única en cada dicionario, pero un mesmo valor pode estar asignado a máis dunha clave.
O dicionario escribese así:
nome_do_dicionario = {clave1:valor1, clave2:valor2,...}
Tanto a clave como o valor poden ser calquera dato ou variable: números, cadeas, tuplas,...
Lembra: o dicionario non está ordenado, polo que non podemos usar os índices coma nas listas ou tuplas. A consulta faise co valor da clave.
Algunhas das operacións que se poden facer con dicionarios aparecen na seguinte táboa:
Operación | Código | Explicación |
---|---|---|
Definir un dicionario | serpes_galegas = {1: 'cobra picuda',2:'cobra lagarteira',3:'cobra rateira'} | Os números 1,2 e 3 son as claves, tamén poderían ser palabras |
Acceder a un valor | print(serpes_galegas[1]) | O resultado sería cobra picuda (lembra que o 1 non é un índice senón o nome da clave deste exemplo) |
Crear diccionario baleiro | animais = {} | Podemos engadir un dicionario baleiro para despois engadir os elementos a través dunha clave |
Engadir elementos nun diccionario baleiro |
animais['reptil'] = 'serpe' animais['mamifero'] = 'can' |
Entre corchetes []poñemos a clave. Non se pode repetir unha clave |
Imprimir un valor | print(animais['reptil']) |
Imprime o valor, pero se non existe esa clave produce un erro de sintaxe: Traceback...KeyError |
Imprimir un valor (aínda que esté baleiro). | print(animais.get('ave')) # empregamos () non [] | Empregamos a función get para poder imprimir tamén se o valor está baleiro. Nese caso arroxará o resultado none |
Exercicio:
- Crea un dicionario con 3 pares de valores. Por exemplo (país,nome_de_deportista) ou (empresa,nome_de_videoxogo).
- Engade un valor novo.
- Consulta o dicionario: dado o valor da clave ten que imprimir o valor do dato asociado.
- Introduce un valor de clave que non existe. Faino logo coa función get ().
MÁIS DE DICIONARIOS
Como normal xeral os dicionarios podemos utilizalos para pequenas bases de datos, onde vaiamos consultar os valores. Por iso é necesario coñecer os comandos que se empregan para facer estas consultas. Na seguinte táboa vemos algúns:
Consultas | Exemplo | Resultado |
---|---|---|
Consultar pola clave |
for n in serpes_galegas: #n é a clave neste exemplo print(n,' : ', serpes_galegas[n]) |
1 : cobra picuda 2 : cobra lagarteira 3 : cobra rateira |
Gardando nunha tupla o par clave empregando a función items() |
for n,serpes in serpes_galegas.items(): print(n,' : ', serpes) |
1 : cobra picuda 2 : cobra lagarteira 3 : cobra rateira |
Verificar ou consultar unha clave empregando o valor in |
if 2 in serpes_galegas: print('No lugar 2 está a ', serpes_galegas[2] ) |
No lugar 2 está a cobra lagarteira |
Algo moi interesante dos dicionarios: Python usa un algoritmo diferente para buscar nas listas ou nas tuplas do que usa nos dicionarios, de tal xeito que o tempo de busca nun dicionario é case que o mesmo independentemente do seu tamaño. Isto é algo sorprendente. O algoritmo das listas emprega a comparación de termos e, a medida que crece a lista ou a tupla, o tempo de consulta é maior. Pero o dicionario emprega un algoritmo de tipo hash, que busca polo valor da clave. Esta é a razón pola que as claves non poden modificarse.
Listas agrupadas: contar palabras O xogo de codificar/decodificar