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()
type(5.)
float
Python es un lenguaje de tipado dinámico, es decir, puedes tener una variable de un tipo y luego asignarle otro tipo
a = 5type(a)
int
a = 'MaximoFN'type(a)
str
Python tipa las variables por ti, pero si las quieres tipear tú se puede hacer
b = int(5.1)type(b), b
(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 '
string = "MaximoFN"string
'MaximoFN'
string = 'MaximoFN'string
'MaximoFN'
Para escribir un string
muy largo y no tener una fila que ocupe mucho espacio, se puede introducir en varias líneas
string = """Este es un ejemplo decomo estoy introduciendo un stringen varias lineas"""string
'Este es un ejemplo de como estoy introduciendo un string en varias lineas'
string = '''Este es un ejemplo decomo estoy introduciendo un stringen varias lineas'''string
'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
print(string)
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
for 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='')
Este es un
Podemos obtener la longitud de nuestro string mediante la función len()
len(string)
73
Chequear si hay algún string determinado dentro del nuestro
'ejemplo' in string
True
Los strings tienen ciertos atributos útiles, como poner todo en mayúsculas
print(string.upper())
ESTE ES UN EJEMPLO DECOMO ESTOY INTRODUCIENDO UN STRINGEN VARIAS LINEAS
Todo en minúsculas
print(string.lower())
este es un ejemplo decomo estoy introduciendo un stringen varias lineas
Reemplazar caracteres
print(string.replace('o', '@'))
Este es un ejempl@ dec@m@ est@y intr@duciend@ un stringen varias lineas
Obtener todas las palabras
print(string.split())
['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
string1 = 'Maximo'string2 = 'FN'string1 + string2
'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 \"
print("Este es el blog de "MaximoFN"")
Este es el blog de "MaximoFN"
Lo mismo con la comilla simple, añadimos \'
print('Este es el blog de 'MaximoFN'')
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) \
print('Este es el blog de \\MaximoFN\\')
Este es el blog de \MaximoFN\
Ya vimos antes el escape character
de nueva línea \n
print('Este es el blog de \nMaximoFN')
Este es el blog deMaximoFN
Si queremos escribir desde el inicio de línea añadimos \r
print('Esto no se imprimirá \rEste es el blog de MaximoFN')
Este es el blog de MaximoFN
Si queremos añadir un espacio grande (sangría) usamos \t
print('Este es el blog de \tMaximoFN')
Este es el blog de MaximoFN
Podemos borrar un carácter con \b
print('Este es el blog de \bMaximoFN')
Este es el blog deMaximoFN
Podemos añadir el código ASCII en octal mediante \ooo
print('\115\141\170\151\155\157\106\116')
MaximoFN
O añadir el código ASCII en hexadecimal mediante \xhh
print('\x4d\x61\x78\x69\x6d\x6f\x46\x4e')
MaximoFN
Por último, podemos convertir otro tipo de dato en un string
n = 5print(type (n))string = str(n)print(type(string))
<class 'int'><class 'str'>
2.2. Números
2.2.1. Enteros
Números de tipo entero
n = 5n, type(n)
(5, int)
2.2.2. Float
Números de tipo coma flotante
n = 5.1n, type(n)
(5.1, float)
2.2.3. Complejos
Números complejos
n = 3 + 5jn, type(n)
((3+5j), complex)
2.2.4. Conversión
Se puede convertir entre tipos de números
n = 5n = float(n)n, type(n)
(5.0, float)
n = 5.1n = complex(n)n, type(n)
((5.1+0j), complex)
n = 5.1n = int(n)n, type(n)
(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
lista = ['item0', 'item1', 'item2', 'item3', 'item4', 'item5']lista
['item0', 'item1', 'item2', 'item3', 'item4', 'item5']
Podemos obtener la longitud de una lista mediante la función len()
len(lista)
6
Las listas pueden tener ítems de distintos tipos
lista = ['item0', 1, True, 5.3, "item4", 5, 6.6]lista
['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
lista[0]
'item0'
Pero una de las cosas potentes de Python es que si queremos acceder a la última posición podemos usar índices negativos
lista[-1]
6.6
Si en vez de la última posición de la lista queremos la penúltima
lista[-2]
5
Si solo queremos un rango de valores, por ejemplo, del segundo al quinto ítem accedemos mediante [2:5]
lista[2:5]
[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]
lista[:5]
['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:]
lista[3:]
[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
lista[-3:-1]
['item4', 5]
Se puede comprobar si un ítem está en la lista
'item4' in lista
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
lista[2] = Falselista
['item0', 1, False, 5.3, 'item4', 5, 6.6]
También se puede modificar un rango de valores
lista[1:4] = [1.1, True, 3]lista
['item0', 1.1, True, 3, 'item4', 5, 6.6]
Se pueden agregar valores al final de la lista mediante el método append()
lista.append('item7')lista
['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()
lista.insert(2, 'insert')lista
['item0', 1.1, 'insert', True, 3, 'item4', 5, 6.6, 'item7']
Se pueden unir listas mediante el método extend()
lista2 = ['item8', 'item9']lista.extend(lista2)lista
['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)
tupla = ('item10', 'item11')lista.extend(tupla)lista
['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()
lista.pop(2)lista
['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
lista.pop()lista
['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()
lista.remove('item7')lista
['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
del lista[3]lista
['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
lista.clear()lista
[]
Se puede obtener la cantidad de ítems con un valor determinado mediante el método count()
lista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.count(5)
4
También se puede obtener el primer índice de un ítem con un valor determinado mediante el método index()
lista = [5, 4, 6, 5, 7, 8, 5, 3, 1, 5]lista.index(5)
0
2.3.1.2. List comprehension
Podemos operar a través de la lista
fruits = ["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)newlist
['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
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]newlist = [x for x in fruits if "a" in x]newlist
['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
newlist = [x.upper() for x in fruits if "a" in x]newlist
['APPLE', 'BANANA', 'MANGO']
2.3.1.3. Ordenar listas
Para ordenar listas usamos el método sort()
lista = [5, 8, 3, 4, 9, 5, 6]lista.sort()lista
[3, 4, 5, 5, 6, 8, 9]
También nos las ordena alfabéticamente
lista = ["orange", "mango", "kiwi", "pineapple", "banana"]lista.sort()lista
['banana', 'kiwi', 'mango', 'orange', 'pineapple']
A la hora de ordenar alfabéticamente, distingue entre mayúsculas y minúsculas
lista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort()lista
['Pineapple', 'banana', 'kiwi', 'mango', 'orange']
Se pueden ordenar en orden descendente mediante el atributo reverse = True
lista = [5, 8, 3, 4, 9, 5, 6]lista.sort(reverse = True)lista
[9, 8, 6, 5, 5, 4, 3]
Se pueden ordenar de la manera que queramos mediante el atributo key
def myfunc(n):# devuelve el valor absoluto de n - 50return abs(n - 50)lista = [100, 50, 65, 82, 23]lista.sort(key = myfunc)lista
[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
lista = ["orange", "mango", "kiwi", "Pineapple", "banana"]lista.sort(key = str.lower)lista
['banana', 'kiwi', 'mango', 'orange', 'Pineapple']
Se puede invertir la lista mediante el método reverse
lista = [5, 8, 3, 4, 9, 5, 6]lista.reverse()lista
[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
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1lista1[0] = Truelista2
[True, 8, 3, 4, 9, 5, 6]
Por lo que hay que usar el método copy()
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = lista1.copy()lista1[0] = Truelista2
[5, 8, 3, 4, 9, 5, 6]
Ó hay que usar el constructor de listas list()
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = list(lista1)lista1[0] = Truelista2
[5, 8, 3, 4, 9, 5, 6]
2.3.1.5. Concatenar listas
Se pueden concatenar listas mediante el operador +
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista = lista1 + lista2lista
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
O mediante el método extend
lista1 = [5, 8, 3, 4, 9, 5, 6]lista2 = ['a', 'b', 'c']lista1.extend(lista2)lista1
[5, 8, 3, 4, 9, 5, 6, 'a', 'b', 'c']
Otra forma de concatenar es repetir la tupla X veces mediante el operador *
lista1 = ['a', 'b', 'c']lista2 = lista1 * 3lista2
['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
tupla = ('item0', 1, True, 3.3, 'item4', True)tupla
('item0', 1, True, 3.3, 'item4', True)
Se puede obtener su longitud mediante la función len()
len (tupla)
6
Para crear tuplas con un único elemento es necesario añadir una coma
tupla = ('item0',)tupla, type(tupla)
(('item0',), tuple)
Para acceder a un elemento de la tupla se procede igual que con las listas
tupla = ('item0', 1, True, 3.3, 'item4', True)print(tupla[0])print(tupla[-1])print(tupla[2:4])print(tupla[-4:-2])
item0True(True, 3.3)(True, 3.3)
Podemos comprobar si hay un item en la tupla
'item4' in tupla
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
lista = list(tupla)lista[4] = 'ITEM4'tupla = tuple(lista)tupla
('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
del tuplaif 'tupla' not in locals():print("tupla eliminada")
tupla eliminada
2.3.2.2. Desempaquetar tuplas
Cuando creamos tuplas, en realidad estamos empaquetando datos
tupla = ('item0', 1, True, 3.3, 'item4', True)tupla
('item0', 1, True, 3.3, 'item4', True)
pero podemos desempaquetarlos
item0, item1, item2, item3, item4, item5 = tuplaitem0, item1, item2, item3, item4, item5
('item0', 1, True, 3.3, 'item4', True)
Si queremos sacar menos datos que la longitud de la tupla añadimos un *
item0, item1, item2, *item3 = tuplaitem0, item1, item2, item3
('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
item0, item1, *item2, item5 = tuplaitem0, item1, item2, item5
('item0', 1, [True, 3.3, 'item4'], True)
2.3.2.3. Concatenar tuplas
Se pueden concatenar tuplas mediante el operador +
tupla1 = ("a", "b" , "c")tupla2 = (1, 2, 3)tupla3 = tupla1 + tupla2tupla3
('a', 'b', 'c', 1, 2, 3)
Otra forma de concatenar es repetir la tupla X veces mediante el operador *
tupla1 = ("a", "b" , "c")tupla2 = tupla1 * 3tupla2
('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
tupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.count(5)
4
Otro método es index()
que devuelve la primera posición de un ítem dentro de la tupla
tupla = (5, 4, 6, 5, 7, 8, 5, 3, 1, 5)tupla.index(5)
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)
for i in range(5):print(f'{i} ', end='')
0 1 2 3 4
Si por ejemplo no queremos que empiece en 0
for i in range(2, 5):print(f'{i} ', end='')
2 3 4
for i in range(-2, 5):print(f'{i} ', end='')
-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.
for i in range(0, 10, 2):print(f'{i} ', end='')
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
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}diccionario
{'brand': 'Ford','model': 'Mustang','year': 1964,'colors': ['red', 'white', 'blue']}
Como se ha dicho no permiten duplicidades
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"year": 2000,"colors": ["red", "white", "blue"]}diccionario["year"]
2000
Se puede obtener su longitud mediante la función len()
len(diccionario)
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
diccionario["model"]
'Mustang'
También se puede acceder mediante el método get
diccionario.get("model")
'Mustang'
Para saber todas las key
s de los diccionarios se puede usar el método keys()
diccionario.keys()
dict_keys(['brand', 'model', 'year', 'colors'])
Se puede usar una variable para apuntar a las key
s del diccionario, con lo que llamándola una vez es necesario
diccionario = {"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)
dict_keys(['brand', 'model', 'year'])dict_keys(['brand', 'model', 'year', 'color'])
Para obtener los valores del diccionario se puede usar el método values()
diccionario.values()
dict_values(['Ford', 'Mustang', 1964, 'white'])
Se puede usar una variable para apuntar a los values
s del diccionario, con lo que llamándola una vez es necesario
diccionario = {"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)
dict_values(['Ford', 'Mustang', 1964])dict_values(['Ford', 'Mustang', 2020])
Si lo que se quiere son los item
s enteros, es decir key
s y value
s hay que usar el método items()
diccionario.items()
dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 2020)])
Se puede usar una variable para apuntar a los item
s del diccionario, con lo que llamándola una vez es necesario
diccionario = {"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)
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
"model" in diccionario
True
2.4.2. Modificar los ítems
Se puede modificar un item
accediendo a él directamente
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["year"] = 2020diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
O se puede modificar mediante el método update()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"year": 2020})diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 2020}
2.4.3. Añadir ítems
Se puede añadir un item
agregándolo de esta manera:
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario["colour"] = "blue"diccionario
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colour': 'blue'}
Ó se puede agregar mediante el método update()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se modifica un itemdiccionario.update({"colour": "blue"})diccionario
{'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()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdiccionario.pop("model")diccionario
{'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 []
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionario["model"]diccionario
{'brand': 'Ford', 'year': 1964}
Se elimina el diccionario entero si se usa del
y no se especifica la key
de un item
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina un itemdel diccionarioif 'diccionario' not in locals():print("diccionario eliminado")
diccionario eliminado
Si lo que se quiere es eliminar el último item
introducido se puede usar el método popitem()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}# Se elimina el último item introducidodiccionario.popitem()diccionario
{'brand': 'Ford', 'model': 'Mustang'}
Si se quiere limpiar el diccionario hay que usar el método clear()
diccionario = {"brand": "Ford","model": "Mustang","year": 1964}diccionario.clear()diccionario
{}
2.4.5. Copiar diccionarios
No se pueden copiar diccionarios mediante diccionario1 = diccionario2
, ya que si se modifica diccionario1
también se modifica diccionario2
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1diccionario1["year"] = 2000diccionario2["year"]
2000
Por lo que hay que usar el método copy()
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = diccionario1.copy()diccionario1["year"] = 2000diccionario2["year"]
1964
Ó hay que usar el constructor de diccionarios `dict()
diccionario1 = {"brand": "Ford","model": "Mustang","year": 1964}diccionario2 = dict(diccionario1)diccionario1["year"] = 2000diccionario2["year"]
1964
2.4.6. Diccionarios anidados
Los diccionarios pueden tener items
s de cualquier tipo de dato, incluso otros diccionarios. A este tipo de diccionarios se les denomina diccionarios nested
diccionario_nested = {"child1" : {"name" : "Emil","year" : 2004},"child2" : {"name" : "Tobias","year" : 2007},"child3" : {"name" : "Linus","year" : 2011}}diccionario_nested
{'child1': {'name': 'Emil', 'year': 2004},'child2': {'name': 'Tobias', 'year': 2007},'child3': {'name': 'Linus', 'year': 2011}}
child1 = {"name" : "Emil","year" : 2004}child2 = {"name" : "Tobias","year" : 2007}child3 = {"name" : "Linus","year" : 2011}diccionario_nested = {"child1" : child1,"child2" : child2,"child3" : child3}diccionario_nested
{'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
dictionary_comprehension = {x: x**2 for x in (2, 4, 6) if x > 2}dictionary_comprehension
{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_
set_ = {'item0', 1, 5.3, "item4", 5, 6.6}set_
{1, 5, 5.3, 6.6, 'item0', 'item4'}
No puede haber ítems duplicados, si encuentra algún ítem duplicado se queda solo con uno
set_ = {'item0', 1, 5.3, "item4", 5, 6.6, 'item0'}set_
{1, 5, 5.3, 6.6, 'item0', 'item4'}
Se puede obtener la longitud del set
mediante la función len()
len(set_)
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
'item4' in set_
True
2.5.1.1. Añadir ítems
Se puede añadir un elemento al set mediante el método add()
set_.add(8.8)set_
{1, 5, 5.3, 6.6, 8.8, 'item0', 'item4'}
Se puede agregar otro set mediante el método `update()'
set2 = {"item5", "item6", 7}set_.update(set2)set_
{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
lista = ["item9", 10, 11.2]set_.update(lista)set_
{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()
set_.remove('item9')set_
{1, 10, 11.2, 5, 5.3, 6.6, 7, 8.8, 'item0', 'item4', 'item5', 'item6'}
O mediante el método discard()
set_.discard('item6')set_
{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 set
s no son ordenados no hay manera de saber cuál es el último item. El método pop()
devuelve el item eliminado
print(f"set antes de pop(): {set_}")eliminado = set_.pop()print(f"Se ha eliminado {eliminado}")
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
set_.clear()set_
set()
Por último, con del
se puede eliminar el set
del set_if 'set_' not in locals():print("set eliminado")
set eliminado
2.5.1.3. Unir ítems
Una forma de unir sets es mediante el método union()
set1 = {"a", "b" , "c"}set2 = {1, 2, 3}set3 = set1.union(set2)set3
{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
set1 = {"a", "b" , "c"}set2 = {1, 2, 3}set1.update(set2)set1
{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()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.intersection(set2)set3
{'apple'}
Si queremos obtener los elementos duplicados en dos sets, pero sin crear un set nuevo, usamos el método intersection_update()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.intersection_update(set2)set1
{'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
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set3 = set1.symmetric_difference(set2)set3
{'banana', 'cherry', 'google', 'microsoft'}
Si queremos quedarnos con los no duplicados sin crear un nuevo set usamos el método symmetric_difference_update()
set1 = {"apple", "banana", "cherry"}set2 = {"google", "microsoft", "apple"}set1.symmetric_difference_update(set2)set1
{'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 frozenset
s son como los set
s pero con la salvedad de que son inmutables, al igual que las tupla
s son como las list
s 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
print(bool("Hello"))print(bool(15))print(bool(0))
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
print(bool("Hola"))print(bool(""))
TrueFalse
print(bool(3))print(bool(0))
TrueFalse
lista = [1, 2, 3]print(bool(lista))lista = []print(bool(lista))
TrueFalse
tupla = (1, 2, 3)print(bool(tupla))tupla = ()print(bool(tupla))
TrueFalse
diccionario = {"brand": "Ford","model": "Mustang","year": 1964,"colors": ["red", "white", "blue"]}print(bool(diccionario))diccionario.clear()print(bool(diccionario))
TrueFalse
set_ = {'item0', 1, 5.3, "item4", 5, 6.6}print(bool(set_))set_.clear()print(bool(set_))
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
byte = b"MaximoFN"byte
b'MaximoFN'
También se pueden crear mediante su constructor bytes()
byte = bytes(10)byte
b'