Sets
Clase 16 de 21 • Curso Profesional de Python
Contenido del curso
Clase 16 de 21 • Curso Profesional de Python
Contenido del curso
Darwin Andres Benavides Miranda
Yair Hernández
Oscar Javier Castelblanco Quintero
Nelson Zapata
DAVID EDUARDO BAEZ SANCHEZ
Diego Buesaquillo
Anthony Pernia
Reinaldo Mendoza
Manuel G. Pineda
Carlos José Tun Pinzón
Gabriel Missael Barco
Adriana Razo De León
Miguel Angel Reyes Moreno
Michelle Duque De La Rosa
Luis Kennedy Saavedra Fuentes
Omar Daniel Centeno
Luis Kennedy Saavedra Fuentes
Juan Carlos Ortiz Romero
Carlos Esteban Lara Gil
Jesús Velázquez Jiménez
GABRIEL OMAR TARAPUES RODRIGUEZ
ANDRES FELIPE MAYA RESTREPO
GABRIEL OMAR TARAPUES RODRIGUEZ
Pablo Aquino
Evander Nassem Ramírez Hernández
Jesús Alejandro Rojas Villarroel
francisco ecatl melo valle
Juan Pablo Cuenca Ludeña
Jeisson Espinosa
Erik Montero
Leonardo Ramos Soto
Mauricio Gonzalez Falcon
Un pequeño resumen:
Los sets son una estructura de datos muy similares a las listas en cuanto a su forma, pero presentan ciertas características particulares:
Los sets son inmutables
Cada elemento del set es único, esto es que no se admiten duplicados, aun si durante la definición del set se agregan elementos repetidos pyhton solo guarda un elemento
los sets guardan los elementos en desorden
Para declararlos se utilizan los {} parecido a los diccionarios solo que carece de la composición de conjunto {a:b, c:d}
# set de enteros my_set = {1, 3, 5} print(my_set) # set de diferentes tipos de datos my_set = {1.0, "Hi", (1, 4, 7)} print(my_set)
Los sets no pueden ser leídos como las listas o recorridos a través de slices, esto debido a que no tienen un criterio de orden. Sin embargo si podemos agregar o eliminar items de los sets utilizando métodos:
#ejemplo de operaciones sobre sets my_set = {1, 2, 3} print(my_set) #Output {1, 2, 3} #añadiendo un elemento al set my_set.add(4) print(my_set) #Output {1, 2, 3, 4} #añadiendo varios elementos al set, python ignorará elementos repetidos my_set.update([1, 5, 6]) print(my_set) #Output {1, 2, 3, 4, 5, 6} # eliminado elementos del set my_set.discard(1) print(my_set) #Output {2, 3, 4, 5, 6} # borrando un elemento aleatorio my_set.pop() print(my_set) #Output el set menos un elemento aleatorio #limpiar el set my_set.clear() print(my_set) # Output set()
Podemos utilizar estructuras de datos existentes para transformarlas a sets utilizando el método set:
#usando listas para crear sets my_list = [1, 2, 3, 3, 4, 5] my_set = set(my_list) print(my_set) #output {1, 2, 3, 4, 5} #usando tuplas para crear sets my_tuple: ('hola', 'hola', 1, 2) my_set2: set(my_tuple) print(my_set2) #Output {'hola', 1}
Excelente resumen. Solamente una corrección:
Los sets son inmutables
Los sets son mutables; sus elementos son inmutables.
Grande!!! Buen aporte
Una aclaración: Los set.pop() No borran un elemento aleatorio, Borran el primer elemento del objeto set. Para los mas interesados: https://www.geeksforgeeks.org/python-set-pop/
Se me hacia extraño que en muchos lenguajes ya sea C o Java, C#, etc. pop elimina el elemento de orden superior o dicho el primero y en Python 1 aleatorio.
Realice una prueba con un set y si me borro elementos aleatorios.
my_set = {1,2,3,4,5,6,8,9,58,24,36,1,2,47,45,46,4} print(my_set) my_set.pop() my_set.pop() my_set.pop() my_set.pop() my_set.pop() my_set.pop()
Sí borra un elemento aleatorio.
como dato , my_set.pop() , devuelve el elemento borrado. podriamos hacer algo tipo :
elemento_eliminado = my_set.pop() ##Elimina un elemento aleatorio del set, y lo devuelve print(f"elemento eliminado = {elemento_eliminado}")
y asi tenemos en cuenta cual se borro, por si hacemos un programa de un sorteo o algo asi.
muy buen aporte
Gracias por el aporte y aclaración!
Sets
Conjuntos: Una colección desordenada de elementos únicos e inmutables.
Características:
Al set no se puede acceder con un índice.
Para declarar un set, el grupo de elementos debe ir entre llaves. Se diferencia de los diccionarios ya que no contienen el símbolo ":", por lo que automáticamente Python lo entiende como un set de datos.
En caso de desear declarar un set vacío no es posible usar llaves ya que al no contener datos entre las llaves las interpreta como un diccionario. En este caso la declaración de un set debe ser explicita mediante el comando set()
Casting con Sets
Para convertir una estructura de datos a un set se utiliza el comando set()
Si se castea una lista a un set como resultado tenemos un set de elementos únicos ya que elimina los elementos repetidos. Los elementos mutables, en caso de existir, este comando los eliminará.
Agregando elementos a un Set
Para agregar un solo elemento se utiliza el método .add de los sets, en cambio, para agregar múltiples elementos se utiliza el método .update. En ambos se eliminan todos los elementos que fuesen repetido en el set o mutables.
Eliminando elementos de un Set
Existen 4 métodos:
Sets
Los sets, o conjuntos, son una colección desordenada de elementos únicos e inmutables. ✨
Tuplas, strings, números, True, False, etc son sets. 🤯
Para crear un set:
my_set = {3, 4, 5} print(my_set) # {3, 4, 5} my_set2 = {"Hola", 23.3, False, True} print(my_set2) # {False, True, "Hola", 23.3} my_set3 = {3, 3, 2} print(my_set3) # {3, 2} my_set4 = {[1, 2, 3], 4} # ERROR!!! empty_set = {} # Esto es dict por defecto print(type(empty_set)) # <class 'dict'> empty_set = set() print(type(empty_set)) # <class 'set'>
Para hacer casting a sets usamos set(). Esto elimina los repetidos de una lista o tupla y los hace set.
Para añadir elementos a un set, usamos my_set.add(<elemento inmutable>). Para añadir varios elementos, hacemos my_set.update(<lista>, <tupla>).
Para borrar elementos de un set, usamos my_set.remove(<elemento>) pero debemos estar seguro de que el set contiene ese elemento. Si no sabemos si existe el elemento my_set.discard(<elemento?>). 👀
Para borrar un elemento aleatorio, usamos my_set.pop(). Para borrar todo usamos my_set.clear().
Mis conjuntos...
Sets
Los sets (conjuntos) son una colección desordenada de elementos únicos e inmutables.
my_set = {3, 4, 5} print(f"my_set = {my_set}") my_set2 = {"Hola",23.3, False, True} print(f"my_set = {my_set2}") my_set3 = {3, 3, 2} # Python automáticamente elimina los duplicados print(f"my_set = {my_set3}") my_set4 = {[1,2,3] , 4} #Error print(f"my_set = {my_set4}")
empty_set = {} # Dictionary empty_set = set() # Set
my_list = [1,1,2,3,4,4,5] my_set = set(my_list) print(my_set) # {1, 2, 3, 4, 5} my_tuple = ("Hola", "Hola", "Hola", 1) my_set2 = set(my_tuple) print(my_set2) # {'Hola', 1}
Añadiendo y quitando elementos a los sets:
my_set = {1, 2, 3} # Añadir un elemento my_set.add(4) # Añadir varios elementos my_set.update([1, 2, 5]) my_set.update((1, 7, 2), {6, 8}) # Borrar un elemento existente my_set.discard(1) my_set.remove(2) # Borrar un elemento inexistente my_set.discard(10) # No hay problema my_set.remove(10) # Error, ese elemento no existe # borrar elemento aleatorio my_set.pop() # Borrar todos los elementos my_set.clear()
Muchas gracias
Buenas tardes, cuando defino un set con elementos incluyendo False y True, al momento de imprimir el SET. Imprime todo el conjunto de elementos pero no el True, entonces cuando cambio el True de posición dentro del set, a a veces si lo imprime y a veces no. ¿A qué se debe esto por fa?
"¡Hola! :)
Si pudieras compartirnos tu código sería más sencillo entender y encontrar la solución. Puedes copiar y pegar utilizando el botón de </> insertar código.
¡Saludos!"
set_principal = set() # Add multiple items with sets, tuples and lists set_principal.update((1, 7, 8, "Hello", True, False), [1, 2, 3, "hello"], {1, 2, 1.2, 3, 10, "Hello"}) print(f'Set = {set_principal}')
Imprime esto:
Set = {False, 1, 2, 3, 1.2, 'hello', 7, 8, 'Hello', 10}
Los sets no pueden ser leídos como las listas o recorridos a través de slices, esto debido a que no tienen un criterio de orden. Sin embargo si podemos agregar o eliminar items de los sets utilizando métodos: add(): nos permite agregar elementos al set, si se intenta agregar un elemento existente simplemente python los ignorara update(): nos permite agregar múltiples elementos al set remove(): permite eliminar un elemento del set, en el caso en que no se encuentre presente dicho elemento, Python elevará un error discard(): permite eliminar un elemento del set, en el caso en que no se encuentre presente dicho elemento, Python dejará el set intacto, sin elevar ningún error. pop(): permite eliminar un elemento del set, pero lo hará de forma aleatoria. clear(): Limpia completamente el set, dejándolo vació.
APUNTES DE LA CLASE DE SETS :snake:
Un set es una colección desordenada de elementos únicos e inmutables.
¿Cómo se crean los sets?
my_set = {1, 2, 3, 4, 5} print("my_set =", my_set) my_set2 = {"Hola", 2.4, False, True} print("my_set2 =", my_set2) my_set3 = {3,3,2} print("my_set3 =", my_set3) my_set4 = {[1,2,3], [4,5,6],4} print("my_set4 =", my_set4) ## Este último da error porque una lista es un elemento mutable
Una llave sin los dos puntos crea un set
Se puede crear sets vacíos..
empty_set = {} print(type(empty_set)) #<class 'dict'> empty_set = set() print(type(empty_set)) # <class 'set'>
Datos a tener en cuenta:
Casting con set
Convertir un set a otra estructura de datos, o una estructura de datos a un set
my_list = [1,1,2,3,45,324] my_set = set(my_list) print(my_set) my_tulpe = ("hola", "hola", "hola", 1) my_set2 = set(my_tulpe) print(my_set2) # {1, 2, 3, 324, 45} # {1, 'hola'}
Datos a tener en cuenta:
Añadir elementos a un set
my_set = {1,2,3} print(my_set) #añadir un elemento my_set.add(4) print(my_set) #añadir múltiples elementos my_set.update([1,2,5]) #añadir múltiples elementos my_set.update([1,7,2], {6,8}) print(my_set) # {1, 2, 3} # {1, 2, 3, 4} # {1, 2, 3, 4, 5, 6, 7, 8}
Datos a tener en cuenta: acá podemos apreciar de que hay métodos que se pueden combinar con los set, por ejemplo .add() y .update(). el .add para agregar un elemento y el update para agregar múltiples elementos
Borrar elementos de un set
my_set = {1,2,3,4,5,6,7} print(my_set) #Borrar un elemento existente my_set.discard(1) my_set.discard(2) print(my_set) #borrar un elemento inexistene my_set.discard(10) my_set.remove(12) print(my_set) # {1, 2, 3, 4, 5, 6, 7} # {3, 4, 5, 6, 7} # Traceback (most recent call last): # File "python.py", line 28, in <module> # my_set.remove(12) # KeyError: 12
Se usan los métodos discard y remove Si el elemento no existe con remove, lanza un error de tipo KeyError. Remove, es más exigene.
Para eliminar elementos aleatorios se usa el pop() y para eliminar todos los elementos del set se usa .clear()
Sets.
Se declaran con { } con la ausencia de ":" El order que establecemos no es respetado, Python lo presenta distinto para ahorrar memoria y tiempo. Además comprende que es un Set por ello nos ayuda a eleminar elementos repetidos.
# Declarar un diccionario y un set vacío dic = {} set = set()
Casting With Sets
Para transformar un elemento a un Set debemos aplicar la función set(elemento). Este proceso elimina todos los elementos repetidos y mutables que contenga.
Hice un ejemplo de set, con la siguiente estructura:
def run(): set_ejemplo = {1, 'gabriel', False, True} print(set_ejemplo) if __name__ == '__main__': run()
y al imprimir, me muestra lo siguiente:
{False, 1, 'gabriel'}
Saben porque no imprime el valor True??
Hola! Esto pasa porque en tu set tienes el valor uno (1). Para python y muchos otros lenguajes 1 es igual a verdadero (1=True) y cero es igual a falso (0=False). Si añadieras el valor 0 en tu Set, tampoco se mostraria el false en el print
EXCELENTE, Muchas gracias.
myset=set() # set empity myset=set(mylist) # convert to set myset.add(element) # add new element myset.update(elements) # update set elements myset.remove(element) # delete element myset.discard(element) # delete element myset.pop() # delete random element myset.clear() # delete all elements
Hola, que tal! ¿En .discard(1) el uno hace referencia al índice o literalmente al elemento 1 (recordando que los indices empiezan en 0, 1, 2)?
Los sets también son iterables?
Si tambien puedes iterar al igual que lo harías en una lista
my_set = {1, 2, 3, 4, "adios"} print(type(my_set)) for i in my_set: print(i)
Comparto mis apuntes #16 (Notion + Notas de Cornell)
Información resumida de esta clase #EstudiantesDePlatzi
Los sets o conjuntos en español, es otra estructura de datos dentro de Python
Sets: Es un conjunto desordenado de elementos únicos e inmutables
Inmutable quiere decir que es un elemento que no se puede modificar
Cuando utilizo { } sin definir el nombre o sin utilizar los dos puntos, Python entiende que esto es un set
Para crear un set vacío, utilizo la palabra clave set ( ) con estos paréntesis
Si deseo añadir un dato a mi set, utilizo el método add
Para añadir varios elementos a mi set, utilizo el método update
Para quitar elementos a un set, utilizo los métodos remove o discard
Cuando utilizo remove para borrar un elemento que no existe dentro del set, Python me genera un error
El método pop borra un elemento aleatorio dentro de mi set
Si deseo borrar todos los elementos que están dentro de mi set, utilizo el método clear
El profesor Facundo ha sido el mejor que he conocido para explicarme todo, desde lo basico hasta lo avanzado, no sabia nada de python ni de los codigos utilizados, hasta este momento agradezco sus explicaciones y su metodo, de escribirlo poco a poco hasta llegar al resultado, muchas gracias.
basic sets
thisset = {"apple", "banana", "cherry"} print(thisset)
medium sets
set1 = {"apple", "banana", "cherry"} set2 = {1, 5, 7, 9, 3} set3 = {True, False, False}
advanced sets
x = {'foo', 'bar', 'baz'}
x.pop() 'bar' x {'baz', 'foo'}
x.pop() 'baz' x {'foo'}
x.pop() 'foo' x set()
x.pop() Traceback (most recent call last): File "<pyshell#82>", line 1, in <module> x.pop() KeyError: 'pop from an empty set'
Sets
Sets = "Colección desordenada de elementos que no se repiten y son inmutables"