Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Colecciones incorporadas en Python

5/23
Recursos

Aportes 34

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Es muy importante saber cuando usar una cierta colección, ya que de ello depende tanto el tamaño que ocupará en memoría como la velocidad en ciertas tareas.
De forma general es recomendable usar tuplas en lugar de listas siempre que no se requiera estar cambiando los valores, ya que ocupan menos espacio en memoría.
Así como usar sets o diccionarios para busqueda de un elemento, ya que son más rapidos.

Les comparto un código de cuanto pesan las diferentes estructuras de python

import sys

colecciones = {"list": list(), "tuple": tuple(), "dict": dict(), "set": set()}

for name, value in colecciones.items():
    print(f'{name} = {sys.getsizeof(value)} bytes')

list = 56 bytes
tuple = 40 bytes
dict = 232 bytes
set = 216 bytes

Resumen:
■■■■■■■

Colecciones Incorporadas en Python

  • Listas: Propósito general, de índices con tamaños dinámicos. Ordenables lista =[].
  • Usaria las listas para almacenar una serie de números, una lista de palabras,y básicamente cualquier cosa.

  • Tuplas: Inmutables, no se pueden añadir más elementos. Utiles para constantes por ejemplo coordenadas, direcciones. Es de tipo secuencial. tupla =()
  • Las usuaría cuando sé exactamente el tamaño que tendrán mis datos.

  • Conjuntos: Almacenan objetos no duplicados.(Teoría de conjuntos), son de acceso rápido, aceptan operaciones lógicas, son desordenados.set() conjunto={1,2,3,4}
  • Usaría un casteo entre conjuntos y listas cuando quiero eliminar duplicados de una lista.

  • Diccionarios: Pares de llaver valor, arrays asociativos (hash maps), son desordenados, y muy rápidos para hacer consultas. diccionario ={'Llave':"Valor"}
  • Los usaría para almacenar datos, listas, objetos que perfectamente pueden volverse un dataframe, o un defaultdict

Lista: Listas para organizar las responsabilidades del día.
Tupla: Almacenar el Documento de Identidad del cliente.
Sets: Cursos que voy llevando.
Diccionario: Glosario con los nuevos términos que voy aprendiendo.

Comó dato curioso:
A partir de la versión de python 3.7 los diccionarios ya estan ordenados.
Lo que significa que al agregar un nuevo item, se colocará al final.

Lo utilizaría para un negocio de comida
Listas: para los pedidos de comida, que platillo se necesita preparar
Tuplas: Para el tipo de alimentos que se preparan (postres, sopas, guarniciones, ensaladas, bebidas, etc…)
Conjuntos / Sets: Para colocar las colonias donde brindas servicio a domicilio
Diccionarios: Para colocar el precio de los alimentos que se venden

Las colecciones más utilizadas, son iterables

.
He visto hasta el momento que las listas seguidas de los diccionarios se llevan de calle a las otras dos colecciones.

Los sets hasta el final, casi no los he visto aplicados y en muchos videos ni se mencionan. Es bueno tenerlos aquí representados. Son bastante útiles para obtener valores individuales de listas con valores duplicados. Otros casos de uso.

demo_set = {1,2,3,4,5}
print(2 in demo_set)
print('a' in demo_set)
--------------------------------------------------------------------
True
False

Puedes hacer unión e intersección de sets:

# Unión
set_a = {1,2,3}
set_b = {3,4,5}
set_c = set_a.union(set_b) 
#OR
set_c = set_a | set_b
print(set_c)
--------------------------------------------------------------------
{1,2,3,4,5}

# Intersección

set_a = {1,2,3}
set_b = {3,4,5}
set_c = set_a.intersection(set_b) 
#OR
set_c = set_a & set_b
print(set_c)
--------------------------------------------------------------------
{3}

Para inicializar un conjunto (creará conjunto vacío) usar la funcionalidad set(), no con {} (esto es para crear inicializar diccionarios)

No es posible ingresar por índices porque no tiene orden.

.
Puedes revisar la documentación sobre SETS

Podría ser para

  • las Listas, las utilizaría para almacenar, tareas, productos de un carrito de compras

  • diccionarios, estos podría usarlos para consultar las características de algún producto de forma rápida.

  • tupas podría ser para almacenar datos como contraseñas

  • sets podría ser para almacenar los libros que prestaría alguien en la biblioteca.

Reto:

List:

  1. Guardaría un listado de objetos a analizar, el objeto que sea y los cantaría para sber el tamaño de la list.

Tuplas:
2. Guardaría constantes que sean inmutables, y que no quisiera perder.

Sets:
3. Tendría varios, posteriormente los uniría para comprobar que valores mantengo distintos.

Diccionarios:
4. Llave valor. Los usaria como indices, dentro guardaría algún tipo de dato que me permita si extracción através de una consulta.

Listas: Tareas diarias.
Tuplas: Las materias que hay que cursar para aprobar una carrera en la universidad.
Conjuntos/sets: Los productos que se venden en un negocio.
Diccionarios: Las capitales de los países.

# Example Lists
seconds_in_day = [i*3600 for i in range(1, 24 +1)]


# Example Tuples
people_brithday_today = ('Patricia', 'Elizabeth', 'Maria', 'Fernando')


# Example Sets
docs_travel_to_usa =["Passport", "Covid Test", "Visa", "Passport"]

# Example Dics
soccer_team_players= {
    'name': 'Cristiano Ronaldo',
    'number':7,
    'position':"CF",
}

print(seconds_in_day)
print(people_brithday_today)
print(set(docs_travel_to_usa))
print(soccer_team_players)
  • Lista: para colocar los nombres de los jugadores de un equipo
  • Tuplas: para colocar una lista de selecciones de fútbol
  • Diccionario: para colocar el nombre del jugador y su posición
  • Conjuntos: Los jugadores que se quieren fichar para la siguiente temporada

Las listas las usaría para guardar el nombre de los desarrolladores de una app, por ser algo que puede cambiar y se suele consultar.
Una Tupla con los datos del programador.
Un set un almacén, tiene muchas cosas sin ordenar generalmente.
Un diccionario(Al ser ya un dato ordenado) se usa para almacenar información más especifica y que podría repetir, como un formulario.

  • List
    El nombre & datos de lugares por donde he visitado
  • Tuple
    Los cursos de Platzi que toca hacer en las rutas
  • Set
    Una lista de compra para mercar
  • Dict
    Una lista de contactos personales

List (Mutables): Agregar elementos de manera iterativa
Tuplas (Inmutables): Las uso mucho dentro de listas para crear listas de pares ordenados.
dict(No ornados): Resultados de bases de datos, Resultados del scraping de una pagina

*Set Dos usos principales, deduplicar objetos dentro de una lista cuando necesito realizar operaciones de conjuntos dentro de un conjunto de datos

diccinarios: en algoritmos del morrall o en e la creacion de mallas
liistas: para la generacion de pilas
sets: en lagorimos de analizi de conjunstos tipo clusters

En una lista pudieramos incluir la lista de precandidatos en una aplicación web o app para votación online para presidente de la clase.
Los sets para un juego donde cada set sea un equipo de Futbol.
Diccionarios en un directorio digital tipo páginas amarillas.

Lista para almacenar un orden de merito
Tupla para almacenar las constantes de multiplicación para el valor de un examen
Conjuntos para almacenar datos que pueda comparar con otro y encontrar duplicados
Diccionario para almacenar dataframe

Con las tuplas puedes almacenar los mimetypes permitidos en una aplicación

mimetype = ('text/html', 'application/json', 'image/png')

Los sets pueden ayudarte a hacer operaciones con conjuntos y

oracion1 = set('Hola, soy una oración'.split(' '))
oracion2 = set('Esta es otra oración'.split(' '))

intersections = oracion1.intersection(oracion2) # Coincide en ambos
differences = oracion1.difference(oracion2) # Tiene A pero no B
simetric_difference = oracion1.symmetric_difference(oracion2) # Tiene A pero no B o B pero no A
union = oracion1.union(oracion2) # Une ambos

print(intersections)
print(differences)
print(simetric_difference)
print(union)

Ejemplo usando listas y diccionarios
Los diccionarios pueden ayudarte mucho para optimizar tu programa en este
hilo te dan un ejemplo increíble donde usan diccionarios

users = [
    {
        'username': 'jose',
        'first': 'jose',
        'last': 'jimenez',
    },
    {
        'username': 'juan',
        'first': 'juan',
        'last': 'perez',
    },
    {
        'username': 'pedro',
        'first': 'pedro',
        'last': 'lopez',
    }
]

Me sorprende como llevo años ‘programando en python’ y aun así este curso me esta enseñando cosas que no tenia idea
Muy bueno.

Usaria:
Las tuplas para guardar las coordenadas en un plano cartesiano. También para almacenar los lados de una figura geométrica. Ej. Un pentágono.

Los sets los emplearía para almacenar las materias aprobadas en la universidad. O también para guardar los paises del mundo. Elementos que sé que no se pueden repetir. O los días de la semana en un calendario.

Los diccionarios los emplearía cuando requielo relacionar información. Por ejemplo, las materias aprobadas por un estudiante. Puedo utilizar un diccionario en donde la llave es la identificación del estudiante y el valor es un set con las materias aprobadas.

Las listas las puedo emplear como matrice en diferentes aplicaciones. Puedo construir una lista de listas para representar los asientos de un avión.

Usaría las tuplas, por ejemplo en los cursos de Platzi 8o cualquier otra plataforma) que haya terminado. O también en libros que he leído.
Usaría las listas, por ejemplo en un videojuego, los items que el personaje puede cargar consigo.
Usaría los diccionarios, por ejemplo para relacionar un libro con su autor (o al revés).
Usaría los conjuntos, por ejemplo para Pokemon (ya lo hice en el curso avanzado de Python jaja).

Listas: Para guardar los nombre de todos los países del mundo.
Tuplas: Para guardar fechas de nacimiento.
Sets: Para guardar el ADN de cada persona.
Diccionarios: Para guardar datos de un usuarios o persona.

Utilizaría un **array ** para registrar el nombre de los invitados que asistieron a una fiesta.

Utilizaría las tuples para registrar los cumpleaños de las personas que conozca

Utilizaría los sets para escribir las instrucciones de como armar un LEGO

Utilizaría los diccionarios para tener un registro de las propiedades de un carro

Las listas no son las únicas estructuras que se pueden comprimir.
Acá les dejo mi código de la clase, en el hago set, dictionary y tuple comprehension.

En este repositorio estoy subiendo todos los ejercicios de la escuela de ciencia de datos: https://github.com/EdinsonRequena/articicial-inteligence-and-data-science

Espero les pueda servir ❤️

# Funcion de listas
def func_list() -> list:

    """
    1) Son de proposito general
    2) Es la estructura mas utilizada
    3) Tama;o dinamico
    4) De tipo secuencial
    5) Ordenable
    """

    list1 = list()
    list2 = [False, any, 'Hola', 5, 3.45 ]
    list3 = [n**2 for n in range(1, 100) if n%2 == 0]

    print(list1)
    print(list2)
    print(list3)

    return list1, list2, list3


# Funcion de tublas
def func_tuples() -> tuple:

    """
    1) Inmutable (no se pueden agregar o cambiar).
    2) Utiles para datos constantes.
    3) Mas rapidas que las listas.
    4) Son de tipo secuencial
    """

    tuple1 = ()
    tuple2 = (100, 200, 300)
    tuple3 = 'mulan', 'pucca', 'percy',
    tuple4 = tuple(i for i in range(1, 100))

    print(tuple1)
    print(tuple2)
    print(tuple3)
    print(tuple4)

    return tuple1, tuple2, tuple3, tuple4


# Funcion de Sets
def func_sets() -> set:

    """
    1) Almacenan objetos no-duplicados
    2) De acceso rapido
    3) Aceptan operaciones logicas
    4) Son desordenados
    """

    set1 = {1, 4, 5, 9, 18, 'hola'}
    set2 = set()
    numbers = [1, 2, 3, 4, 5]
    set3 = set(numbers)
    set4 = {s**2 for s in range(10)}

    print(set1)
    print(set2)
    print(set3)
    print(set4)

    return set1, set2, set3, set4


# Funcion de Diccionarios
def func_dict() -> dict:

    """
    1) Pares de llave/valor
    2) Arrays asociativos (Hash Maps)
    3) Son desordenados
    """

    dict1 = {'mulan': 1, 'pucca': 1.2, 'percy': 4}
    dict2 = dict(mulan=2, pucca=1.2, percy=4)
    dict3 = {i: i**2 for i in range(1, 101) if i % 2 == 0}

    print(dict1)
    print(dict2)
    print(dict3)

    return dict1, dict2, dict3


if __name__ == '__main__':

    func_list()
    func_tuples()
    func_sets()
    func_dict()


Decidiría usar cada una en base a sus cualidades, considerando tanto si es dinámica, ordenada, de acceso rápido, etc.

  • Listas: Las ocuparía para guardar tareas.
  • Tuplas: Para guardar los nombres de todos los países
  • Sets : Para guardar el número de asientos de un estadio
  • Diccionarios: Para almacenar nombres de las personas y sus edades.

Lista: La usaría para enumerar metas pendientes del mes.
Tupla: Para asociar a un autor con sus obras. Por ejemplo, la Mona Lisa de Leonardo Da Vinci.
Conjunto: Compras del mercado.
Diccionario: Para realizar un censo de población.

  1. ¿En que casos usarías cada estructura ?
    • Diccionario = lo usaria cuando necesito guardar
      informacion que se comporta como key-value por ejemplo
      capturar informacion de un formulario de registro web y
      guardarlo como :
      campo nombre : "Daniela morales"
      si guardo esto en un dict seria = form_dict ={“nombre”: “Daniela morales”}
    • Lista = la usaría cuando necesito insertar cualquier tipo de dato de manera que por ejemplo si voy a insertar enteros podre ordenarlos en forma de stack o queue
    • Tuplas = Las usaria cuando no voy a necesitar mutar la información por ejemplo un tupla de tuplas que contengan 2 posiciones donde la 0 sea el nombre del cliente y el segundo su numero de cédula
    • Sets = los usaria cuando quiero tener datos únicos por ejemplo un set me ayudaria en el caso tal de que necesite o quiera obtener de dos conjuntos de datos donde el 1ro sea clientes que usan un servicio de la empresa de prestamos y el 2do conjunto clientes que esta en clasificados como no aptos para solicitar ese servicio de préstamo y si quiera verificar que efectivamente ese 2do grupo de clientes no haya ninguno en el otro conjunto haria una intersección y debería botarme un conjunto vacio sino pues traduce a que hay personas en el conjunto de aptos para prestamos que al mismo tiempo estan en el conjunto de No aptos par solicitar ese servicio de prestamo

Y ya asi lo veo 😄

Lista : almacenaria una lista de tareas pendientes por hace en donde podria agregar y modificar.

tuplas: almacenaria los telefonos de los usuarios.

conjunto/set:almacenaria instrucciones de como se armaria un mueble u otro objeto.

diccionarios: almacenaria datos de un usuario como su name, last name, email, etc.

Listas: se puede utilizar para almacenar datos ordenados, pero que pueden modificarse, eliminarse o agregarse otros, es de uso general.
Tuplas: por su velocidad e inmutabilidad son ideales para iterar sobre ellas, por ejemplo, convertir una lista previamente ordenada en una tupla con tuple(lista) e iterar sobre ella con un ciclo for, es mas eficiente que iterar directamente sobre la lista y es menos propenso a posibles errores manipulando la lista original.
Conjuntos: cuando se necesitan datos únicos y de acceso rápido, por ejemplo, opciones para ingresar datos en un campo de una base de datos.
Diccionarios: me gusta utilizarlas cuando se necesita información mas contextual o una correlación ‘clave’ <-> ‘valor’ sobre cada elemento incluido y este va a ser utilizado en otra estructura, como por ejemplo, una libreta de contactos, donde cada entrada puede ser un elemento de una lista y este elemento es a su vez un diccionario con nombre, dirección, teléfono, etc.

Programa de manejo de una asociación de vecinos:
Las listas las usaría para las actividades que se hacen.
Las tuplas para las fichas de los asociados, que no cambian.
Los set para Los inventarios de la asociación, menús del bar.
Diccionarios para el organigrama de la asociación. Pedro: Presidente, Luis: secretario, María: tesorera.

Listas: Agregaria los cursos que estoy llevando para poder estar borrando y agregando segun sea el caso.
Tupla: Información o keywords en smart contracts
Sets: mis passwords
Diccionarios: Lo utilizaria para inventarios

Uso que daría a…
Lista: Yo creo que un buen uso que se le podría dar a la lista es un carrito de compras, donde se pueden agregar distintos productos.
Tupla: Se caracteriza por ser inmutable y dicho eso, igualmente optimiza el uso de memoria al tener un solo tamaño ya definido y que no va a cambiar, las usaría para almacenar los nombres de distintas columnas de una tabla que pueda estar consultando.
Conjuntos:Útiles para almacenar información que no se va a repetir y realizar operaciones con conjuntos. Podríamos usarla en conjunto con las listas, para que dada una lista, al convertirla en un conjunto, nos aseguremos que no hay datos repetidos. Un uso cotidiano podría ser para representar las diferentes nominaciones de una moneda.
Diccionarios: Una de mis estructuras de datos favoritas, la verdad le encuentro muchos usos como un objeto en Javascript que tenga todas las caracteristicas de un objeto, un diccionario literalmente en donde podamos traducir de ingles a español algunas palabras, y también podría servir para convertir de un número decimal a un número romano.

Todos estos son solo unos de los usos que se le dan a las colecciones en Python, es muy flexible en ese tema y es por eso que se prefiere mucho para ciencia de datos.