1. Resumen
Vamos a hacer una breve introducción a Python, explicando los tipos de datos que tenemos, los operadores, el uso de funciones y de clases. Además, veremos cómo usar los objetos iterables, cómo usar módulos, etc.
2. Tipos de datos de Python
Existen 7 tipos de datos en Python
- De tipo texto:
str - Numéricos:
int,float,complex - Secuencias:
list,tuple,range - Mapping:
dict - Sets:
set,frozenset - Booleanos:
bool - Binarios:
bytes,bytearray,memoryview
Podemos obtener el tipo de dato mediante la función type()
InputPythontype(5.)Copied
float
Python es un lenguaje de tipado dinámico, es decir, puedes tener una variable de un tipo y luego asignarle otro tipo
InputPythona = 5type(a)Copied
int
InputPythona = 'MaximoFN'type(a)Copied
str
Python tipa las variables por ti, pero si las quieres tipear tú se puede hacer
InputPythonb = int(5.1)type(b), bCopied
(int, 5)
Aunque b se ha inicializado como 5.1, es decir, debería ser de tipo float, al tiparlo nosotros a tipo int, vemos que es de tipo int y además su valor es 5
2.1. Strings
Los strings son cadenas de caracteres, estas se pueden definir con doble comilla " o comilla simple '
InputPythonstring = "MaximoFN"stringCopied
'MaximoFN'
InputPythonstring = 'MaximoFN'stringCopied
'MaximoFN'
Para escribir un string muy largo y no tener una fila que ocupe mucho espacio, se puede introducir en varias líneas
InputPythonstring = """Este es un ejemplo decomo estoy introduciendo un stringen varias lineas"""stringCopied
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
InputPythonstring = '''Este es un ejemplo decomo estoy introduciendo un stringen varias lineas'''stringCopied
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
Sin embargo, vemos que en medio ha metido el carácter del salto de línea. Si usamos la función print() veremos cómo ya no aparece
InputPythonprint(string)Copied
Este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Como hemos dicho, los strings son cadenas de caracteres, por lo que podemos navegar e iterar a través de ellos
InputPythonfor i in range(10):# Se indica a la función print que cuando imprima no termine con un salto de# linea para escribir todo en la misma lineaprint(string[i], end='')Copied
Este es un
Podemos obtener la longitud de nuestro string mediante la función len()
InputPythonlen(string)Copied
73
Chequear si hay algún string determinado dentro del nuestro
InputPython'ejemplo' in stringCopied
True
Los strings tienen ciertos atributos útiles, como poner todo en mayúsculas
InputPythonprint(string.upper())Copied
ESTE ES UN EJEMPLO DECOMO ESTOY INTRODUCIENDO UN STRINGEN VARIAS LINEAS
Todo en minúsculas
InputPythonprint(string.lower())Copied
este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Reemplazar caracteres
InputPythonprint(string.replace('o', '@'))Copied
Este es un ejempl@ dec@m@ est@y intr@duciend@ un stringen varias lineas
Obtener todas las palabras
InputPythonprint(string.split())Copied
['Este', 'es', 'un', 'ejemplo', 'de', 'como', 'estoy', 'introduciendo', 'un', 'string', 'en', 'varias', 'lineas']
Puedes ver todos los métodos de los strings en este enlace
Otra cosa útil que se puede hacer con los strings es concatenarlos
InputPythonstring1 = 'Maximo'string2 = 'FN'string1 + string2Copied
'MaximoFN'
Antes explicamos que el carácter \n correspondía a un salto de línea, este carácter especial corresponde a una serie de caracteres especiales llamados Escape Characters. Veamos otros
Si declaramos un string con doble comilla y queremos añadir una doble comilla dentro del string usamos el escape character \"
InputPythonprint("Este es el blog de "MaximoFN"")Copied
Este es el blog de "MaximoFN"
Lo mismo con la comilla simple, añadimos \'
InputPythonprint('Este es el blog de 'MaximoFN'')Copied
Este es el blog de 'MaximoFN'
Ahora tenemos el problema de si queremos añadir el carácter \ ya que como hemos visto es un escape character, así que lo solucionamos poniendo doble barra (backslash) \
InputPythonprint('Este es el blog de \\MaximoFN\\')Copied
Este es el blog de \MaximoFN\
Ya vimos antes el escape character de nueva línea \n
InputPythonprint('Este es el blog de \nMaximoFN')Copied
Este es el blog deMaximoFN
Si queremos escribir desde el inicio de línea añadimos \r
InputPythonprint('Esto no se imprimirá \rEste es el blog de MaximoFN')Copied
Este es el blog de MaximoFN
Si queremos añadir un espacio grande (sangría) usamos \t
InputPythonprint('Este es el blog de \tMaximoFN')Copied
Este es el blog de MaximoFN
Podemos borrar un carácter con \b
InputPythonprint('Este es el blog de \bMaximoFN')Copied
Este es el blog deMaximoFN
Podemos añadir el código ASCII en octal mediante \ooo
InputPythonprint('\115\141\170\151\155\157\106\116')Copied
MaximoFN
O añadir el código ASCII en hexadecimal mediante \xhh
InputPythonprint('\x4d\x61\x78\x69\x6d\x6f\x46\x4e')Copied
MaximoFN
Por último, podemos convertir otro tipo de dato en un string
InputPythonn = 5print(type (n))string = str(n)print(type(string))Copied
<class 'int'><class 'str'>
2.2. Números
2.2.1. Enteros
Números de tipo entero
InputPythonn = 5n, type(n)Copied
(5, int)
2.2.2. Float
Números de tipo coma flotante
InputPythonn = 5.1n, type(n)Copied
(5.1, float)
2.2.3. Complejos
Números complejos
InputPythonn = 3 + 5jn, type(n)Copied
((3+5j), complex)
2.2.4. Conversión
Se puede convertir entre tipos de números
InputPythonn = 5n = float(n)n, type(n)Copied
(5.0, float)
InputPythonn = 5.1n = complex(n)n, type(n)Copied
((5.1+0j), complex)
InputPythonn = 5.1n = int(n)n, type(n)Copied
(5, int)
No se puede convertir un número complex a tipo int o tipo float
2.3. Secuencias
2.3.1. Listas
Las listas guardan múltiples ítems en una variable. Se declaran mediante los símbolos [], con los ítems separados por comas
InputPythonlista = ['item0', 'item1', 'item2', 'item3', 'item4', 'item5']listaCopied
['item0', 'item1', 'item2', 'item3', 'item4', 'item5']
Podemos obtener la longitud de una lista mediante la función len()
InputPythonlen(lista)Copied
6
Las listas pueden tener ítems de distintos tipos
InputPythonlista = ['item0', 1, True, 5.3, "item4", 5, 6.6]listaCopied
['item0', 1, True, 5.3, 'item4', 5, 6.6]
En Python se empieza a contar desde la posición 0, es decir, si queremos obtener el primer elemento de la lista
InputPythonlista[0]Copied
'item0'
Pero una de las cosas potentes de Python es que si queremos acceder a la última posición podemos usar índices negativos
InputPythonlista[-1]Copied
6.6
Si en vez de la última posición de la lista queremos la penúltima
InputPythonlista[-2]Copied
5
Si solo queremos un rango de valores, por ejemplo, del segundo al quinto ítem accedemos mediante [2:5]
InputPythonlista[2:5]Copied
[True, 5.3, 'item4']
Si se omite el primer número del rango significa que queremos desde el primer ítem de la lista hasta el ítem indicado, es decir, si queremos desde el primer ítem hasta el quinto usamos [:5]
InputPythonlista[:5]Copied
['item0', 1, True, 5.3, 'item4']
Si se omite el último número del rango, significa que queremos desde el ítem indicado hasta el último. Es decir, si queremos desde el tercer ítem hasta el último, usamos [3:]
InputPythonlista[3:]Copied
[5.3, 'item4', 5, 6.6]
Podemos escoger el rango de ítems también con números negativos, es decir, si queremos desde el antepenúltimo hasta el penúltimo usamos [-3:-1]. Esto es útil cuando se tiene listas que no se sabe su longitud, pero se sabe que se quiere un rango de valores del final, porque por ejemplo, la lista se ha creado con medidas que se van tomando y se quiere saber las últimas medias
InputPythonlista[-3:-1]Copied
['item4', 5]
Se puede comprobar si un ítem está en la lista
InputPython'item4' in listaCopied
True
2.3.1.1. Editar listas
Las listas en Python son dinámicas, es decir, se pueden modificar. Por ejemplo se puede modificar el tercer ítem
InputPythonlista[2] = FalselistaCopied
['item0', 1, False, 5.3, 'item4', 5, 6.6]
También se puede modificar un rango de valores
InputPythonlista[1:4] = [1.1, True, 3]listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6]
Se pueden agregar valores al final de la lista mediante el método append()
InputPythonlista.append('item7')listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7']
O podemos insertar un valor en una posición determinada mediante el método insert()
InputPythonlista.insert(2, 'insert')listaCopied
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7']
Se pueden unir listas mediante el método extend()
InputPythonlista2 = ['item8', 'item9']lista.extend(lista2)listaCopied
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9']
No es necesario extender la lista mediante otra lista, se puede hacer mediante otro tipo de dato iterable de Python (tuplas, sets, diccionarios, etc)
InputPythontupla = ('item10', 'item11')lista.extend(tupla)listaCopied
['item0',1.1,'insert',True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Podemos eliminar una posición determinada mediante el método pop()
InputPythonlista.pop(2)listaCopied
['item0',1.1,True,3,'item4',5,6.6,'item7','item8','item9','item10','item11']
Si no se especifica el índice, se elimina el último ítem
InputPythonlista.pop()listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item7', 'item8', 'item9', 'item10']
O se puede eliminar un item sabiendo su valor mediante el método remove()
InputPythonlista.remove('item7')listaCopied
['item0', 1.1, True, 3, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Con la función del() se puede eliminar también un ítem de la posición indicada
InputPythondel lista[3]listaCopied
['item0', 1.1, True, 'item4', 5, 6.6, 'item8', 'item9', 'item10']
Si no se indica el índice se elimina la lista completa
Con el método clear() dejo la lista vacía
InputPythonlista.clear()listaCopied
[]
Se puede obtener la cantidad de ítems con un valor determinado mediante el método count()
InputPythonlista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.count(5)Copied
4
También se puede obtener el primer índice de un ítem con un valor determinado mediante el método index()
InputPythonlista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.index(5)Copied
0
2.3.1.2. List comprehension
Podemos operar a través de la lista
InputPythonfruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = []# Iteramos por todos los items de la listafor x in fruits:# Si el item contiene el caracter "a" lo añadimos a newlistif "a" in x:newlist.append(x)newlistCopied
['apple', 'banana', 'mango']
Otras de las cosas potentes de Python son las list comprehensions, que permiten hacer todo en una sola línea y que el código quede más compacto
InputPythonfruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = [x for x in fruits if "a" in x]newlistCopied
['apple', 'banana', 'mango']
La sintaxis es la siguiente:
newlist = [expression for item in iterable if condition == True]Se puede aprovechar para realizar operaciones en la lista original
InputPythonnewlist = [x.upper() for x in fruits if "a" in x]newlistCopied
['APPLE', 'BANANA', 'MANGO']
2.3.1.3. Ordenar listas
Para ordenar listas usamos el método sort()
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.sort()listaCopied
[3, 4, 5, 5, 6, 8, 9]
También nos las ordena alfabéticamente
InputPythonlista = ["orange", "mango", "kiwi", "pineapple", "banana"]lista.sort()listaCopied
['banana', 'kiwi', 'mango', 'orange', 'pineapple']
A la hora de ordenar alfabéticamente, distingue entre mayúsculas y minúsculas
InputPythonlista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort()listaCopied
['Pineapple', 'banana', 'kiwi', 'mango', 'orange']
Se pueden ordenar en orden descendente mediante el atributo reverse = True
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.sort(reverse = True)listaCopied
[9, 8, 6, 5, 5, 4, 3]
Se pueden ordenar de la manera que queramos mediante el atributo key
InputPythondef myfunc(n):# devuelve el valor absoluto de n - 50return abs(n - 50)lista = [100, 50, 65, 82, 23]lista.sort(key = myfunc)listaCopied
[50, 65, 23, 82, 100]
Se puede aprovechar esto para que, por ejemplo, a la hora de ordenar no distinga entre mayúsculas y minúsculas
InputPythonlista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort(key = str.lower)listaCopied
['banana', 'kiwi', 'mango', 'orange', 'Pineapple']
Se puede invertir la lista mediante el método reverse
InputPythonlista = [5, 8, 3, 4, 9, 5, 6]lista.reverse()listaCopied
[6, 5, 9, 4, 3, 8, 5]
2.3.1.4. Copiar listas
No se pueden copiar listas mediante lista1 = lista2, ya que si se modifica lista1 también se modifica lista2
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1lista1[0] = Truelista2Copied
[True, 8, 3, 4, 9, 5, 6]
Por lo que hay que usar el método copy()
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1.copy()lista1[0] = Truelista2Copied
[5, 8, 3, 4, 9, 5, 6]
Ó hay que usar el constructor de listas list()
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = list(lista1)lista1[0] = Truelista2Copied
[5, 8, 3, 4, 9, 5, 6]
2.3.1.5. Concatenar listas
Se pueden concatenar listas mediante el operador +
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista = lista1 + lista2listaCopied
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
O mediante el método extend
InputPythonlista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista1.extend(lista2)lista1Copied
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
Otra forma de concatenar es repetir la tupla X veces mediante el operador *
InputPythonlista1 = ['a', 'b', 'c']lista2 = lista1 * 3lista2Copied
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
2.3.2. Tuplas
Las tuplas son similares a las listas, guardan múltiples ítems en una variable, pueden contener ítems de distintos tipos, pero no se pueden modificar ni reordenar. Se definen mediante (), con los ítems separados por comas
Al no poderse modificar, hace que las tuplas se ejecuten un poco más rápido que las listas, por lo que si no necesitas modificar los datos, es mejor utilizar tuplas en vez de listas
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)tuplaCopied
('item0', 1, True, 3.3, 'item4', True)
Se puede obtener su longitud mediante la función len()
InputPythonlen (tupla)Copied
6
Para crear tuplas con un único elemento es necesario añadir una coma
InputPythontupla = ('item0',)tupla, type(tupla)Copied
(('item0',), tuple)
Para acceder a un elemento de la tupla se procede igual que con las listas
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)print(tupla[0])print(tupla[-1])print(tupla[2:4])print(tupla[-4:-2])Copied
item0True(True, 3.3)(True, 3.3)
Podemos comprobar si hay un item en la tupla
InputPython'item4' in tuplaCopied
True
2.3.2.1. Modificar tuplas
Aunque las tuplas no son modificables, se pueden modificar convirtiéndolas a listas, modificando la lista y después volver a convertirla en una tupla
InputPythonlista = list(tupla)lista[4] = 'ITEM4'tupla = tuple(lista)tuplaCopied
('item0', 1, True, 3.3, 'ITEM4', True)
Al convertirla a lista, podemos hacer todas las modificaciones vistas en las listas
Lo que sí se puede es eliminar la tupla completa
InputPythondel tuplaif 'tupla' not in locals():print("tupla eliminada")Copied
tupla eliminada
2.3.2.2. Desempaquetar tuplas
Cuando creamos tuplas, en realidad estamos empaquetando datos
InputPythontupla = ('item0', 1, True, 3.3, 'item4', True)tuplaCopied
('item0', 1, True, 3.3, 'item4', True)
pero podemos desempaquetarlos
InputPythonitem0, item1, item2, item3, item4, item5 = tuplaitem0, item1, item2, item3, item4, item5Copied
('item0', 1, True, 3.3, 'item4', True)
Si queremos sacar menos datos que la longitud de la tupla añadimos un *
InputPythonitem0, item1, item2, *item3 = tuplaitem0, item1, item2, item3Copied
('item0', 1, True, [3.3, 'item4', True])
Se puede poner el asterisco * en otra parte si por ejemplo lo que queremos es el último ítem
InputPythonitem0, item1, *item2, item5 = tuplaitem0, item1, item2, item5Copied
('item0', 1, [True, 3.3, 'item4'], True)
2.3.2.3. Concatenar tuplas
Se pueden concatenar tuplas mediante el operador +
InputPythontupla1 = ("a", "b" , "c")tupla2 = (1, 2, 3)tupla3 = tupla1 + tupla2tupla3Copied
('a', 'b', 'c', 1, 2, 3)
Otra forma de concatenar es repetir la tupla X veces mediante el operador *
InputPythontupla1 = ("a", "b" , "c")tupla2 = tupla1 * 3tupla2Copied
('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
2.3.2.4. Métodos de las tuplas
Las tuplas tienen dos métodos, el primero es el método count() que devuelve el número de veces que aparece un ítem dentro de la tupla
InputPythontupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.count(5)Copied
4
Otro método es index() que devuelve la primera posición de un ítem dentro de la tupla
InputPythontupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.index(5)Copied
0
2.3.3. Range
Con range() podemos crear una secuencia de números, comenzando desde 0 (de forma predeterminada), se incrementa en 1 (de forma predeterminada) y se detiene antes de un número especificado
range(start, stop, step)Por ejemplo, si queremos una secuencia de 0 a 5 (sin incluir el 5)
InputPythonfor i in range(5):print(f'{i} ', end='')Copied
0 1 2 3 4
Si por ejemplo no queremos que empiece en 0
InputPythonfor i in range(2, 5):print(f'{i} ', end='')Copied
2 3 4
InputPythonfor i in range(-2, 5):print(f'{i} ', end='')Copied
-2 -1 0 1 2 3 4
Por último, si no queremos que se incremente en 1, si por ejemplo queremos una secuencia de números pares.
InputPythonfor i in range(0, 10, 2):print(f'{i} ', end='')Copied
0 2 4 6 8
2.4. Diccionarios
Los diccionarios se usan para guardar datos en pares key:value. Son modificables, no ordenados y no permiten duplicidades. Se definen mediante los símbolos {}. Admiten ítems de distintos tipos de datos
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}diccionarioCopied
{'brand': 'Ford','model': 'Mustang','year': 1964,'colors': ['red', 'white', 'blue']}
Como se ha dicho no permiten duplicidades
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"year": 2000,"colors": ["red", "white", "blue"]}diccionario["year"]Copied
2000
Se puede obtener su longitud mediante la función len()
InputPythonlen(diccionario)Copied
4
Como se puede ver la longitud es 4 y no 5, ya que year lo cuenta solo una vez
2.4.1. Acceder a los items
Para acceder a un elemento lo podemos hacer a través de su key
InputPythondiccionario["model"]Copied
'Mustang'
También se puede acceder mediante el método get
InputPythondiccionario.get("model")Copied
'Mustang'
Para saber todas las keys de los diccionarios se puede usar el método keys()
InputPythondiccionario.keys()Copied
dict_keys(['brand', 'model', 'year', 'colors'])
Se puede usar una variable para apuntar a las keys del diccionario, con lo que llamándola una vez es necesario
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a las keysx = diccionario.keys()print(x)# Se añade una nueva keydiccionario["color"] = "white"# Se consulta la variable que apunta a las keyprint(x)Copied
dict_keys(['brand', 'model', 'year'])dict_keys(['brand', 'model', 'year', 'color'])
Para obtener los valores del diccionario se puede usar el método values()
InputPythondiccionario.values()Copied
dict_values(['Ford', 'Mustang', 1964, 'white'])
Se puede usar una variable para apuntar a los valuess del diccionario, con lo que llamándola una vez es necesario
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a los valuesx = diccionario.values()print(x)# Se modifica un valuediccionario["year"] = 2020# Se consulta la variable que apunta a los valuesprint(x)Copied
dict_values(['Ford', 'Mustang', 1964])dict_values(['Ford', 'Mustang', 2020])
Si lo que se quiere son los items enteros, es decir keys y values hay que usar el método items()
InputPythondiccionario.items()Copied
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Se puede usar una variable para apuntar a los items del diccionario, con lo que llamándola una vez es necesario
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se declara una vez la variable que apunta a los itemsx = diccionario.items()print(x)# Se modifica un valuediccionario["year"] = 2020# Se consulta la variable que apunta a los itemsprint(x)Copied
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 1964)])dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Se puede comprobar si una key existe en el diccionario
InputPython"model" in diccionarioCopied
True
2.4.2. Modificar los ítems
Se puede modificar un item accediendo a él directamente
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["year"] = 2020diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
O se puede modificar mediante el método update()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"year": 2020})diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
2.4.3. Añadir ítems
Se puede añadir un item agregándolo de esta manera:
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["colour"] = "blue"diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
Ó se puede agregar mediante el método update()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"colour": "blue"})diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
2.4.4. Eliminar items
Se puede eliminar un item con una key específica mediante el método pop()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdiccionario.pop("model")diccionarioCopied
{'brand': 'Ford', 'year': 1964}
O se puede eliminar un item con una key específica mediante del indicando el nombre de la key entre los símbolos []
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionario["model"]diccionarioCopied
{'brand': 'Ford', 'year': 1964}
Se elimina el diccionario entero si se usa del y no se especifica la key de un item
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionarioif 'diccionario' not in locals():print("diccionario eliminado")Copied
diccionario eliminado
Si lo que se quiere es eliminar el último item introducido se puede usar el método popitem()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina el último item introducidodiccionario.popitem()diccionarioCopied
{'brand': 'Ford', 'model': 'Mustang'}
Si se quiere limpiar el diccionario hay que usar el método clear()
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964}diccionario.clear()diccionarioCopied
{}
2.4.5. Copiar diccionarios
No se pueden copiar diccionarios mediante diccionario1 = diccionario2, ya que si se modifica diccionario1 también se modifica diccionario2
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1diccionario1["year"] = 2000diccionario2["year"]Copied
2000
Por lo que hay que usar el método copy()
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1.copy()diccionario1["year"] = 2000diccionario2["year"]Copied
1964
Ó hay que usar el constructor de diccionarios `dict()
InputPythondiccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = dict(diccionario1)diccionario1["year"] = 2000diccionario2["year"]Copied
1964
2.4.6. Diccionarios anidados
Los diccionarios pueden tener itemss de cualquier tipo de dato, incluso otros diccionarios. A este tipo de diccionarios se les denomina diccionarios nested
InputPythondiccionario_nested = {"child1" : {"name" : "Emil","year" : 2004},"child2" : {"name" : "Tobias","year" : 2007},"child3" : {"name" : "Linus","year" : 2011}}diccionario_nestedCopied
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
InputPythonchild1 = {"name" : "Emil","year" : 2004}child2 = {"name" : "Tobias","year" : 2007}child3 = {"name" : "Linus","year" : 2011}diccionario_nested = {"child1" : child1,"child2" : child2,"child3" : child3}diccionario_nestedCopied
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
2.4.7. Métodos de los diccionarios
Estos son los métodos que se pueden usar en los diccionarios
2.4.8. Dictionary comprehension
Igual que podíamos hacer list comprehensions mediante la sintaxis
list_comprehension = [expression for item in iterable if condition == True]Podemos hacer dictionaries comprehensions mediante la siguiente sintaxis
dictionary_comprehension = {key_expression: value_expression for item in iterable if condition == True}Veamos un ejemplo
InputPythondictionary_comprehension = {x: x**2 for x in (2, 4, 6) if x > 2}dictionary_comprehensionCopied
{4: 16, 6: 36}
2.5. Sets
2.5.1. Set
Los sets se utilizan en Python para guardar un conjunto de items en una sola variable. Se pueden guardar items de distintos tipos. Son no ordenados y no tienen índice.
Se diferencian de las listas en que no tienen ni orden ni índice.
Se declaran mediante los símbolos {}
Como set es una palabra reservada en Python creamos un set con el nombre set_
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6}set_Copied
{1, 5, 5.3, 6.6, 'item0', 'item4'}
No puede haber ítems duplicados, si encuentra algún ítem duplicado se queda solo con uno
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6, 'item0'}set_Copied
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Se puede obtener la longitud del set mediante la función len()
InputPythonlen(set_)Copied
6
Como se puede ver la longitud del set es 6 y no 7, ya que se queda con un solo 'item0'
Se puede comprobar si un item se encuentra en el set
InputPython'item4' in set_Copied
True
2.5.1.1. Añadir ítems
Se puede añadir un elemento al set mediante el método add()
InputPythonset_.add(8.8)set_Copied
{1, 5, 5.3, 6.6, 8.8, 'item0', 'item4'}
Se puede agregar otro set mediante el método `update()'
InputPythonset2 = {"item5", "item6", 7}set_.update(set2)set_Copied
{1, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
También se pueden añadir items de tipos de datos iterables de Python
InputPythonlista = ["item9", 10, 11.2]set_.update(lista)set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6', 'item9'}
2.5.1.2. Eliminar ítems
Se puede eliminar un ítem determinado mediante el método remove()
InputPythonset_.remove('item9')set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
O mediante el método discard()
InputPythonset_.discard('item6')set_Copied
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5'}
Mediante el método pop() se puede eliminar el último item, pero como los sets no son ordenados no hay manera de saber cuál es el último item. El método pop() devuelve el item eliminado
InputPythonprint(f"set antes de pop(): {set_}")eliminado = set_.pop()print(f"Se ha eliminado {eliminado}")Copied
set antes de pop(): {1, 5, 5.3, 6.6, 8.8, 7, 10, 11.2, 'item5', 'item0', 'item4'}Se ha eliminado 1
Mediante el método clear() se puede vaciar el conjunto
InputPythonset_.clear()set_Copied
set()
Por último, con del se puede eliminar el set
InputPythondel set_if 'set_' not in locals():print("set eliminado")Copied
set eliminado
2.5.1.3. Unir ítems
Una forma de unir sets es mediante el método union()
InputPythonset1 = {"a", "b" , "c"}set2 = {1, 2, 3}set3 = set1.union(set2)set3Copied
{1, 2, 3, 'a', 'b', 'c'}
Otra forma es mediante el método update(), pero de esta manera se añade un set en otro, no se crea uno nuevo
InputPythonset1 = {"a", "b" , "c"}set2 = {1, 2, 3}set1.update(set2)set1Copied
{1, 2, 3, 'a', 'b', 'c'}
Estos métodos de unión eliminan los duplicados, pero si queremos obtener los elementos duplicados en dos sets usamos el método intersection()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.intersection(set2)set3Copied
{'apple'}
Si queremos obtener los elementos duplicados en dos sets, pero sin crear un set nuevo, usamos el método intersection_update()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.intersection_update(set2)set1Copied
{'apple'}
Ahora al revés, si queremos quedarnos con los no duplicados usamos el método symmetric_difference().
La diferencia entre esto y la unión entre dos sets es que en la unión se queda con todos los ítems, pero los que están duplicados solo los coge una vez. Ahora nos quedamos con los que no están duplicados
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.symmetric_difference(set2)set3Copied
{'banana', 'cherry', 'google', 'microsoft'}
Si queremos quedarnos con los no duplicados sin crear un nuevo set usamos el método symmetric_difference_update()
InputPythonset1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.symmetric_difference_update(set2)set1Copied
{'banana', 'cherry', 'google', 'microsoft'}
2.5.1.4. Métodos de los sets
Estos son los métodos que se pueden usar en los sets
2.5.2. FrozenSet
Los frozensets son como los sets pero con la salvedad de que son inmutables, al igual que las tuplas son como las lists pero inmutables. Por lo que no podremos añadir o eliminar items
2.6. Booleanos
Hay solo dos booleanos en Python: True y False
Mediante la función bool() se puede evaluar si cualquier cosa es True o False
InputPythonprint(bool("Hello"))print(bool(15))print(bool(0))Copied
TrueTrueFalse
2.6.1. Otros tipos de datos True y False
Los siguientes datos son True:
- Cualquier string que no esté vacío
- Cualquier número excepto el 0
- Cualquier lista, tupla, diccionario o set que no esté vacío
InputPythonprint(bool("Hola"))print(bool(""))Copied
TrueFalse
InputPythonprint(bool(3))print(bool(0))Copied
TrueFalse
InputPythonlista = [1, 2, 3]print(bool(lista))lista = []print(bool(lista))Copied
TrueFalse
InputPythontupla = (1, 2, 3)print(bool(tupla))tupla = ()print(bool(tupla))Copied
TrueFalse
InputPythondiccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}print(bool(diccionario))diccionario.clear()print(bool(diccionario))Copied
TrueFalse
InputPythonset_ = {'item0', 1, 5.3, "item4", 5, 6.6}print(bool(set_))set_.clear()print(bool(set_))Copied
TrueFalse
2.7. Binarios
2.7.1. Bytes
El tipo bytes es una secuencia inmutable de bytes. Solo admiten caracteres ASCII. También se pueden representar los bytes mediante números enteros cuyos valores deben cumplir 0 <= x < 256
Para crear un tipo byte debemos introducir antes el carácter b
InputPythonbyte = b"MaximoFN"byteCopied
b'MaximoFN'
También se pueden crear mediante su constructor bytes()
InputPythonbyte = bytes(10)byteCopied
b'