Python
1 - Tipos de colecciones
1.1 – Listas
Admiten elementos repetidos, respetan el orden, y son mutables. Se inicializan con corchetes.
mylist = ["apple", "banana", "cherry"]
- Permiten almacenar elementos de distintos tipos.
thislist = list(("apple", "banana", "cherry")) # note the double
round-brackets
- Acceso por índices y rangos de índices:
print(thislist[1])
print(thislist[-1])
print(thislist[2:5]) #desde el elemento de índice 2 al 5 (excl.)
thislist[2] = "orange" #modificar un elemento de una posición
- Comprobar si un elemento está o no está en la lista:
thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
print("Yes, 'apple' is in the fruits list")
if "pineaple" not in thislist:
print("No, 'pineaple' is not in the fruits list")
- Borrar un elemento de la lista con remove()
thislist = ["apple", "banana", "cherry"]
[Link]("banana")
- Un elemento de un índice con pop(), o el último si no se indica argumento. Devuelve el
elemento borrado:
thislist = ["apple", "banana", "cherry"]
mybanana = [Link](1)
print(mybanana)
- También con la palabra reservada del:
del thislist[1] #borra el primer elemento
del thislist #borra la lista y no se podrá referenciar
- Añadir elementos al final con append()
[Link]("caqui")
- Unión con otra listas (o cualquier iterable) con extend()
thislist = ["apple", "banana", "cherry"]
thistuple = ("kiwi", "orange")
[Link](thistuple)
print(thislist)
- Y con el operador + sin ambas son listas
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
list3 = list1 + list2
print(list3)
- Recorridos completos o en un rango:
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
[print(x) for x in thislist] #forma abreviada
#usando índices
for i in range(len(thislist)):
thislist[i] = thislist[i].upper()
#con while
while i < len(thislist):
print(thislist[i])
i = i + 1
#recorrer un subrango. En este caso del 1 al 3 sin incluir el 3
for x in list[1:3]:
print(x)
1.2 – Tuplas
Las tuplas son listas ordenadas, pero INMUTABLES. No tienen la función append() o remove().
Se inicializan usando paréntesis.
thistuple = ("apple",)
print(type(thistuple))
#NOT a tuple
thistuple = ("apple")
print(type(thistuple))
another_tuple = tuple(("apple", "banana", "cherry")) # note the
double round-brackets
Para hacer cambios, podemos crear una lista a partir de una tupla, modificarla, y crear una
tupla de la lista modificada.
x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)
print(x)
- Desempaquetar una tupla (pasar cada elemento a una variable)
fruits = ("apple", "banana", "cherry")
(green, yellow, red) = fruits
#Si el número de variables es menor que el de elementos, el *
nos almacena el resto de elementos en forma de lista
fruits =
("apple", "banana", "cherry", "strawberry", "raspberry")
(green, yellow, *red) = fruits
print(green)
print(yellow)
print(red) # mostrará ["cherry", "strawberry", "raspberry"]
1.3 – Sets
Los sets son conjuntos de valores SIN DUPLICADOS y desordenados (el orden es aleatorio) =>
No se puede acceder por índice a los elementos ni se pueden modificar sus elementos, pero sí
borrar o añadir nuevos.
Se inicializan con llaves.
#True y 1 se consideran el mismo valor. Sólo se guardará True
thisset = {"apple", "banana", "cherry", True, 1, 2}
print(thisset)
- Podemos acceder a los elementos recorriéndolos con bucles
thisset = {"apple", "banana", "cherry"}
for x in thisset:
print(x)
- Añadimos elementos con add(), o un iterable completo con update()
thisset = {"apple", "banana", "cherry"}
[Link]("orange")
mylist = ["kiwi", "orange"]
[Link](mylist)
- Borramos con remove() (que lanza error si el elemento no existe) o con discard() (que no
lanza error), o con pop() (que borra un elemento aleatorio). clear() vacía el set.
[Link]("banana")
[Link]("banana")
[Link]()
[Link]()#se puede referenciar, pero estará vacío
del thisset # ya no se puede referenciar
- Combinando conjuntos
- The union() and update() y el operador | joins all items from both sets.
- The intersection() method keeps ONLY the duplicates.
- The difference() method keeps the items from the first set that are not in the other
set(s).
- The symmetric_difference() method keeps all items EXCEPT the duplicates.
#unimos un set y una tupla
x = {"a", "b", "c"}
y = (1, 2, 3)
z = [Link](y)
#update() modifica el set original
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
[Link](set2)
print(set1)
#intersection y el devuelve un nuevo set con los elementos
comunes
set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}
set3 = [Link](set2)
print(set3)
#también el operador & si ambos son sets
set3 = set1 & set2
#intersection_update() actúa sobre el set original, manteniendo
los elementos comunes
set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}
set1.intersection_update(set2)
#elementos del set1 que no están presentes en el set2, en un
nuevo set
set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}
set3 = [Link](set2)
#también con el operador –
set3 = set1 - set2
#o con difference_update() para actuar sobre el set original
set1.difference_update(set2)
#symetric_difference() mantiene los elementos que NO están en
ambos
set1 = {"apple", "banana", "cherry"}
set2 = {"google", "microsoft", "apple"}
set3 = set1.symmetric_difference(set2)
1.4 Diccionarios
Los diccionarios almacenan elementos en forma de pares clave:valor. NO admite duplicados
(dos valores distintos en la misma clave).
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"])
#también con get
print([Link]("brand"))
Los elementos se guardan en el orden indicado desde Python 3.7 en adelante
#usando el constructor dict()
thisdict = dict(name = "John", age = 36, country = "Norway")
- La función keys() devuelve una lista observable (dict_keys) de todas las claves
x = [Link]()
- y values() devuelve una lista observable (dict_values) de todos los valores
x = [Link]()
- Podemos añadir nuevos elementos
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
car["color"] = "white"
#también con update()
[Link]({"color": "red"})
- Podemos obtener un dict_items (una especie de lista observable) de sus elementos que es
una lista de tuplas, cada tupla con el par (clave,valor), con la función items()
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = [Link]()
# imprime dict_items([('brand', 'Ford'), ('model', 'Mustang'),
('year', 1964)])
print(x)
- Podemos borrar elementos con pop(clave), o el último con popitem()
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
[Link]("model")
[Link]() #borra la clave year
- Recorridos
#imprime LAS CLAVES
for x in thisdict:
print(x)
#imprime los valores
for x in thisdict:
print(thisdict[x])
#o recorriendo la lista de valores
for x in [Link]():
print(x)
#o si queremos mostrar las claves
for x in [Link]():
print(x)
#o recorriendo los dict_items
for x, y in [Link]():
print(x, y)
- Para copiar diccionarios usamos copy() o el constructor dict()
mydict = [Link]()
mydict = dict(thisdict)
- Diccionarios anidados
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
print(myfamily["child2"]["name"])
2 – Condicionales
if b > a:
print("b is greater than a")
elif a == b:
print("a and b are equal")
else:
print("a is greater than b")
#si sólo hay una sentencia, se puede poner en la misma línea,
sin indentar
if a > b: print("a is greater than b") else
#operadores
a = 200
b = 33
c = 500
if a > b and c > a:
print("Both conditions are True")
if a > b or a > c:
print("At least one of the conditions is True")
if not a > b:
print("a is NOT greater than b")
3 – While con else
Realiza algo una vez termina el bucle (no se ejecuta si se terminar con break)
while i < 6:
print(i)
i += 1
else:
print("i is no longer less than 6")
4 – Bucle for
for x in range(6):
print(x)
for x in range(2, 6):
print(x)
#muestra cada letra
for x in "banana":
print(x)
#también admite un else para ejecutar al final del bucle, si se
recorre entero
for x in range(6):
print(x)
else:
print("Finally finished!")