En la intersección de la ciberseguridad y la eficiencia de programación, se encuentra el dominio de las estructuras de datos en Python. ¿Quiere seleccionar elementos de una lista de objetos pero olvidó cómo comprender la lista? O tal vez tenga un archivo de notación de objetos JavaScript (JSON) y necesite encontrar una estructura de datos adecuada para procesar los datos que contiene. 

La buena noticia es que hemos preparado esta hoja de referencia. También sirve como repaso de las estructuras de datos y algoritmos aplicados a Python. 

Tipos de estructuras de datos en Python

Aquí hay un diagrama para ilustrar la jerarquía de las estructuras de datos de Python:

DESCRIPCIÓNEJEMPLOS
StringColección de caracteres entre comillas simples o dobles.‘Alvaro’, «Chirou»
BooleanValores lógicosTrue, False
IntegerNúmero entero de longitud ilimitada.0, -273
Floatdecimal de coma flotante1.618, 3.1415926

Estructuras de datos no primitivas integradas en Python

Estas estructuras de datos, que almacenan valores y colecciones de valores, son inherentes a Python.

DESCRIPCIÓNORDENADOPERMITIR DUPLICADOSMUDABLESINTAXISEJEMPLOS
List[ ]• [1, 2.3, True]
• [‘John’, ‘Doe’]
Tuple( )• (‘age’, 22)
• (7.89, False)
Set

0 is the same as False, as are 1 and True.
{ }• {6, 4.5}
• {‘nice’, True}
Dictionary

Map, storing key-value pairs.
√ > 3,7
✕ ≤ 3,6
{key: value}• • {«FB»: «Facebook»,
«WA»: «WhatsApp»,
«IG»: «Instagram»}
{‘name’: ‘Bob’, ‘id’: 255}

Operaciones de lista y tupla

Tenga en cuenta que las listas y tuplas de Python tienen un índice cero , lo que significa que el primer elemento tiene un índice de 0. Consulte el cuadro de comandos a continuación para ver un ejemplo.

Acceder a elementos en listas

La siguiente tabla se basa en esta lista:

fruit_list = ["manzana", "banana", "cereza", "naranja", "kiwi", "melón", "mango"].

DOMINIODESCRIPCIÓN
fruit_list[0]Obtenga el primer elemento de la lista («manzana»)
fruit_list[1]Obtenga el segundo elemento de la lista («banana»)
fruit_list[-1]Consigue el último artículo («mango»)
fruit_list[­2:5]Obtenga los elementos de los índices de principio a fin.
fruit_list[:4]Obtenga los elementos desde el principio pero excluya «kiwi» y más allá
fruit_list[2:]Consigue los elementos desde «cereza» hasta el final.
fruit_list[­-4:-1]Obtenga los artículos desde «naranja» (-4) en adelante pero excluya «mango» (-1)
if "­app­le" in fruit_list:
   print(­"Yes, we have 'apple'")
Comprueba si «manzana» está en la lista

Métodos de lista (y tupla)

Los comandos con un asterisco (*) se aplican a tuplas.

DOMINIODESCRIPCIÓNUSO
append()Agregar un elemento al final de la listalist1.a­ppend(element)
clear()Eliminar todos los elementos de la lista.list1.c­lear()
copy()Devolver una copia de la listalist1.c­opy()
count()Devuelve el número de elementos con el valor especificado*list1.c­oun­t(e­lement)
extend()Agregar los elementos de una lista (o cualquier iterable), al final de la lista actuallist1.e­xt­end­(list2)
index()Devuelve el índice del primer elemento con el valor especificado*list1.i­nde­x(e­lem­ent­[,s­tar­t[,­end]])
insert()Agregue un elemento en la posición especificada (la posición es un número entero)list1.i­nse­rt(­po­sition, element)
pop()Retire el elemento en la posición especificada.list1.p­op(­[in­dex])
remove()Eliminar el primer elemento con el valor especificadolist1.r­emo­ve(­ele­ment)
reverse()Invertir el orden de la listalist1.re­verse()
sort()
sort(reverse = True)
Ordenar la lista en orden ascendente/descendentelist1.sort()
list2.sort(reverse = True)
del()Eliminar de la lista el elemento especificado con su índicedel list1[­index]
list1 + list2Unir dos listaslist1 = ["x", "y"]
list2 = [8, 9]
list3 = list1 + list2

Returns: ["x","y",8,9]

Comprensión de listas

La comprensión de listas simplifica la creación de una nueva lista basada en los valores de una lista existente.

DOMINIODESCRIPCIÓN
[n for n in range(10) if n < 5]Aceptar sólo números menores de 5
[x for x in fruits if "­a" in x]Aceptar artículos que contengan » a«.
[x for x in fruits if x != "­app­le"]Aceptar todos los artículos excepto » app­le«
[x.upper() for x in fruits]Poner en mayúsculas los valores en la nueva lista.
[x + '?' for x in fruits]Agregue un signo de interrogación al final de cada elemento.
['hello' for x in fruits]Establezca todos los valores en la nueva lista en ‘ hello
[x if x != "­ban­ana­" else "naranja­" for x in fruits]Reemplace » ban­ana­» con » naranja­» en la nueva lista

Accediendo a elementos en tuplas

A continuación, la tupla en cuestión es fruits = ("manzana", "banana", "cereza").

DOMINIODESCRIPCIÓN
"­app­le" in fruitsCompruebe si » app­le» está presente en la tupla. Este comando devuelve el valor True.
(x, y, z) = fruits
# x == "manzana"

# y == "banana"
# z == "cereza"
(a, *_) = fruits
# a == "manzana"

# _ == ["banana", "cereza"]
Asigne variables para ocupar cada elemento de la tupla, lo que también se conoce como desempaquetar una tupla.

El número de variables debe coincidir con el número de valores de la tupla o utilizar un asterisco como se muestra para guardar los valores no deseados.

Manipulación de tuplas

Agregar elementos

Puede agregar elementos a una tupla de la siguiente manera:

Inicialoriginal = ("manzana­", "­ban­ana­", "­cereza")
Códigonew_item = ("naranja",)
original += new_item
Resultado("manzana", "­ban­ana­", "­cereza­", "naranja")

Consejo: al crear una tupla de un solo elemento, recuerde incluir una coma.

Eliminar elementos y cambiar valores

Dado que las tuplas son inmutables, no puedes eliminar ni modificar su contenido directamente. La clave es convertirlo en una lista y viceversa.

EJEMPLOSUMAELIMINACIÓNCAMBIAR
Inicialoriginal = ("manzana­", "­ban­ana­", "­cereza")original = ("manzana­", "­ban­ana­", "­cereza­")original = ("manzana", "­ban­ana­", "­cereza")
→ ListatempList = list(original)tempList = list(original)tempList = list(original)
CódigotempList.appe­nd(­"­naranja­")tempList.remo­ve(­"­manzana")tempList[1] = "­kiw­i"
→ tuplanewList = tuple(tempList)newList = tuple(tempList)newList = tuple(tempList)
Consecuencia de newList("manzana­", "­ban­ana­", "­cereza­", "naranja")("­ban­ana­", "­cereza")("kiwi", "­ban­ana­", "­cereza­")

Operaciones de diccionario

Agregar elementos

Hay tres métodos:

EJEMPLOADICIÓN #1 (DIRECTA)ADICIÓN #2 (ACTUALIZACIÓN())ADICIÓN #3 (**)
Inicialmeta = { "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram" }

new_co = { "GIF": "Giphy" }
meta = { "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram" }

new_co = { "GIF": "Giphy" }
meta = { "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram" }

new_co = { "GIF": "Giphy" }
Códigometa[­"GIF"] = "Giphy"meta.update(new_co)meta = {**meta, **new_co}
Consecuencia de meta{ "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram", "GIF": "Giphy" }{ "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram", "GIF": "Giphy" }{ "FB": "Facebook", "WA": "WhatsApp", "IG": "Instagram", "GIF": "Giphy" }

Advertencia: las claves duplicadas harán que los valores más recientes sobrescriban los valores anteriores.

Operaciones Generales

DOMINIODESCRIPCIÓNEJEMPLO
del dict1[­"key1"]Eliminar el elemento con el nombre de clave especificadodel meta[­"WA"]
# "WhatsApp"
del di­ct1eliminar el diccionariodel meta
dict1[key1]Acceda al valor de un dict1 elemento del diccionario usando su clavekey1meta["FB"]# "Facebook"
Método de diccionarioDescripciónUso
clear()Eliminar todos los elementos del diccionario.dict1.c­lear()
copy()Devolver una copia del diccionariodict1.c­opy()
fromkeys()Devolver un diccionario con las claves y el valor especificadosdict1.f­rom­key­s(keys, value)
get()Devuelve el valor de la clave especificada.dictio­nar­y.g­et(­key­_name, value)
items()Devuelve una lista que contiene una tupla para cada par clave-valordict1.i­tems()
keys()Devolver una lista que contiene las claves del diccionario.dict1.k­eys()
pop()Eliminar el elemento con la clave especificada.dict1.p­op(ke­y_name)
popitem()Eliminar el último par clave-valor insertadodict1.p­opi­tem()
setdef­ault()Devuelve el valor de la clave especificada. Si la clave no existe, agregue como nuevo par clave-valordict1.s­etd­efa­ult­(ke­y_name, value)
update()Actualizar el diccionario con los pares clave-valor especificadosdict1.u­pda­te(­ite­rable)
values()Devuelve una lista de todos los valores del diccionario.dict1.v­alues()

Establecer operaciones

Accediendo

Aunque no puede acceder directamente a los elementos de un conjunto, puede recorrerlos en bucle:

EJEMPLOACCEDER A ELEMENTOS DE UN CONJUNTO (USANDO LA COMPRENSIÓN DE LISTAS)
Códigoset1 = {32, 1, 2, 27, 83, 26, 59, 60}
set1_odd = [i for i in set1 if i % 2 == 1]
Resultadoset1_odd = [1, 27, 83, 59]

Agregar y quitar elementos

DOMINIODESCRIPCIÓNUSO
add()Añadir un solo elemento al conjunto.fruits.a­dd(­"­naranja­")
update()Agregar elementos de otro conjunto a este conjuntofruits.a­dd(­{"ananá", "­man­go", "sandía"})
discard()
remove()
Eliminar el elemento especificadofruits.d­isc­ard­("ba­nan­a")
fruits.r­emo­ve(­"­ban­ana­")
pop()Elimina el último elemento del conjunto. El valor de retorno de bye es el elemento eliminado.bye = fruits.pop()
clear()Vaciar el conjuntofruits.clear()
copy()Devolver una copia del setfruits.copy()
delEliminar el conjuntodel fruits

Operaciones matemáticas

COMANDO/OPERADOR(ES) BINARIO(S)DESCRIPCIÓN
differ­ence()
-
Consigue la diferencia de varios conjuntos.
differ­enc­e_u­pdate()Eliminar los elementos de este conjunto que también están incluidos en otro conjunto especificado
inters­ect­ion()
&
Obtener intersección de conjuntos
inters­ect­ion­_up­date()Eliminar los elementos de este conjunto que no están presentes en otros conjuntos especificados.
isdisj­oint()Devuelve si dos conjuntos tienen una intersección
issubset()
<, <=
Comprobar si un conjunto es un subconjunto (estricto <)
issupe­rset()
>, >=
Comprobar si un conjunto es un superconjunto (estricto >)
symmet­ric­_di­ffe­rence()
^
Obtener diferencia simétrica de dos conjuntos
symmetric_difference_update()Insertar las diferencias simétricas de este conjunto y otro
union()
|
Obtener la unión de conjuntos.

Algoritmos y complejidades

Esta sección trata sobre las clases de complejidad de varias estructuras de datos de Python.

Lista

Las tuplas tienen las mismas operaciones (no mutables) y complejidades.

COMANDO ( L: LISTA)CLASE DE COMPLEJIDAD
L.append(item)O(1)
L.clear()O(1)
item in/not in LO(N)
L.copy()O(N)
del L[i]O(N)
L.extend(…)O(N)
L1==L2, L1!=L2O(N)
L[i]O(1)
for item in L:O(N)
len(L)O(1)
k*LO(k*N)
min(L), max(L)O(N)
L.pop(-1)O(1)
L.pop(item)O(N)
L.remove(…)O(N)
L.reverse()O(N)
L[x:y]O(y-x)
L.sort()O(N*log(N))
L[i]=itemO(1)

Diccionario

COMANDO ( D: DICCIONARIO)CLASE/RANGO DE COMPLEJIDAD (—)
d.clear()O(1)
dict(…)O(len(d))
del d[k]O(1) — O(N)
d.get()O(1) — O(N)
for item in d:O(N)
len(d)O(1)
d.pop(item)O(1) — O(N)
d.popitem()O(1)
d.values()O(1)
d.keys()O(1)
d.fromkeys(seq)O(len(seq))

Colocar

OPERACIÓNCOMANDO ( S: ESTABLECER)CLASE/RANGO DE COMPLEJIDAD (—)
Agregars.add(item)O(1) — O(N)
Vaciass.clear()O(1)
Copiars.copy()O(N)
Contenciónitem in/not in sO(1) — O(N)
Creaciónset(…)O(len(s))
Desechars.discard(item)O(1) — O(N)
Diferencias1-s2O(len(s1))
Actualización de diferenciass1.difference_update(s2)O(len(s2)) — ∞
Igualdads1==s2, s1!=s2O(min(len(s1), len(s2)))
Interseccións1&s2O(min(len(s1), len(s2)))
Iteraciónfor item in s:O(N)
es subconjuntos1<=s2O(len(s1))
es superseries1>=s2O(len(s2)) — O(len(s1))
Pops.pop()O(1) — O(N)
Unións1|s2O(len(s1)+len(s2)) — ∞
Diferencia simétricas1^s2O(len(s1)) — O(len(s1)*len(s2))

Tabla de símbolos

Python realiza un seguimiento de las variables mediante tablas de símbolos, que puede explorar utilizando los siguientes comandos básicos:

DOMINIODESCRIPCIÓN
__doc__Documentación del programa como comentarios ( #, """, ''') al principio del código.
__name__Cómo se ejecuta el programa Python. Ejecución directa: __name__ == "__main__"
dir()Espacio de nombres efectivo
global()Diccionario de nombres de variables de alcance global a valores de variables.
locals()Diccionario de nombres de variables de alcance local a valores de variables.
eval()Devuelve el valor de la variable especificada.
Ejemplo de uso:for x in dir(): print(x, eval(x))

Bibliotecas de Python

Los siguientes comandos sirven para configurar programas o bibliotecas de Python para usarlos dentro de su programa:

DOMINIODESCRIPCIÓN
import module1Importar programa/biblioteca  module1 como módulo Python
from module1 import obj1, obj2Importar los objetos obj1, obj2 from module1
from module1 import *Importar todos los objetos en module1
module1.__dict__Devuelve el diccionario que contiene module1la tabla de símbolos, como dir() el del programa principal.

Ejemplos de bibliotecas de Python que contienen otras estructuras de datos no primitivas:

  • matriz : matrices eficientes de valores numéricos
  • colecciones : estructuras de datos abstractas
  • clases de datos : para crear estructuras de datos definidas por el usuario
  • datetime : tipos básicos de fecha y hora
  • cola : clase de cola sincronizada

Preguntas frecuentes

¿Cuáles son las estructuras de datos en Python?

Primitivo: cadena, entero, flotante, booleano.
No primitivo, integrado: lista, conjunto, tupla, diccionario.
La documentación de Python incluye otros adicionales .

¿Es tupla una estructura de datos?

Sí. Una tupla es una estructura de datos no primitiva en Python.

¿Python es bueno para DSA?

Sí. La sintaxis de Python es similar al pseudocódigo, lo que hace que el aprendizaje de estructuras y algoritmos de datos (DSA) sea intuitivo.

¿Cuántas estructuras de datos hay en Python?

Existen innumerables estructuras de datos en Python. Los usuarios también pueden definir estructuras de datos personalizadas.

Al dominar las estructuras de datos en Python, los profesionales de la ciberseguridad no solo optimizan la eficiencia de programación, sino que también aseguran un terreno más firme contra las crecientes amenazas en el ciberespacio.

Python Practicando. Desde 0 hasta Desarrollador en Python

Python es Hoy uno de los lenguajes más utilizados por Excelencia.

Esto se debe por su simpleza al momento de Desarrollar aplicaciones.

Por su capacidad de procesamiento a altas velocidades con grandes volúmenes de información.

Es un increíble lenguaje con el cual si no sabes programar, podrás aprender.

Y si ya sabes desarrollar, te aconsejo aprenderlo ya que en el mercado cada vez se solicitan más desarrolladores en Python.

Aspirar al trabajo que desean, o mejorar sus ingresos con un aumento de salario.

Python se utiliza para muchisimas cosas como:

  • Machine Learning
  • Data Science
  • Inteligencia Artificial.
  • Y mucho más!

En este curso te acompañare en el proceso por el cual aprenderás las bases del lenguaje, para luego determinar qué camino quieres seguir.

Te invito que me acompañes a conocer este Gran Lenguaje!

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 500.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma.

Y junto a mi compañero Walter Coto donde con él hemos dado formaciones profesionales en conjunto también en la plataforma de Udemy, hoy les traemos esta oportunidad de seguirse formando en el lenguaje mas demandado por el mercado.

Tendrás acceso de por vida al curso, recibirás actualizaciones y respuestas a tus preguntas a través de la plataforma de Udemy.

Empieza a aprender ya mismo!

Lo que aprenderás

  • Ejercitar la lógica de programación
  • Comprender cómo la vida cotidiana puede ser fácilitada o simulada con código
  • Aprender programación desde cero
  • Usar Visual Studio Code como Editor de Código
  • Conocer y aprender el lenguaje de programación Python
  • Ser un programador desde cero, sin conocimiento en otro lenguaje o con algo previo
  • Mejorar las habilidades de programación, mejorar procesos y fácilitar la comprensión de código
  • Preparar un entorno dónde programar en Python
  • Operaciones aritméticas y jerarquía de Python
  • Manejo de cadenas en Python
  • Digitar datos por teclado con Python
  • Mostrar Datos por Pantalla al usuario en Python
  • Operadores Relacionales de Python
  • Operadores Lógicos de Python
  • Condicionales en Python
  • Estructuras de Datos: Listas, Tuplas y Diccionarios
  • Iteraciones y bucles repetitivos de Python
  • Segmentar Código y hacerlo más eficaz con las Funciones en Python
  • Gestionar posibles errores que puedan dar tus programas
  • Programación Orientada a Objetos
  • HTML y CSS
  • Selenium Web Driver con Python
  • Ejercitar todo lo Aprendido con Ejercicios

Aprende Python, donde iniciamos desde 0, sin conocimientos previos hasta desarrollar aplicaciones con mucha practica! https://achirou.com/python