• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Simulador FIRE (Financial Independence, Retire Early)
    • Herramientas
      • Formateador / Minificador de JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Vectores, tuplas y diccionarios en Julia (6ª parte – ¡Hola Julia!)

julio 30, 2020 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 7 minutos

En muchos programas es necesario poder trabajar con secuencias de datos, que pueden estar ordenados o no. Para estos casos contamos con vectores, tuplas y diccionarios en Julia. Estructuras de datos que vamos a ver a continuación.

Tabla de contenidos

  • 1 Vectores en Julia
    • 1.1 Diferente tipos de datos y vectores anidados
    • 1.2 Recorrer los elementos de un vector
    • 1.3 Operador dos puntos
    • 1.4 Cuando dos vectores son iguales
    • 1.5 Agregar y eliminar elementos en un vector
    • 1.6 El operador .
  • 2 Tuplas
  • 3 Diccionarios
  • 4 Estructurar de datos en Julia
  • 5 Publicaciones de la serie ¡Hola Julia!

Vectores en Julia

Los vectores son posiblemente la estructura de datos más utilizada. Los cuales son una secuencia ordenada de elementos, que pueden ser números, cadenas de texto, o incluso otros vectores. A diferencia de lo que pasa en otros lenguajes, como puede se el caso de Matlab, los elementos de un vector no tienen porque ser del mismo tipo, pudiendo incluir todos los elementos que necesitemos.

Para crear un vector solamente hay que rodear entre corchetes los elementos de este. Por ejemplo,

vect = [1,2,3,4]

Este es un vector que contiene cuatro elementos que son 1, 2, 3 y 4. Además almacenados en este orden. Para acceder a cada uno de los elementos hay que escribir el nombre de la variable seguido de la posición entre corchetes. Recordando que el Julia los vectores comienzan en 1. Así, vect[3] hace referencia al tercer elemento del vector, 3.

Los vectores son mutables, por lo que en las funciones se pasan por referencia. Para modificar un elemento del vector solamente hay que asignar el nuevo valor a este. Así para asignar el valor 10 en la tercera posición solo hay que hacer vect[3] = 10.

Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
En Analytics Lane
Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane

Diferente tipos de datos y vectores anidados

Pero los vectores pueden contener más tipos de datos, como en el siguiente caso

vector = [1, 2, "hola", [3, 4]]

En este caso el prime u segundo elemento son enteros, el tercero una cadena de texto y el cuarto un vector. Los cuales se suelen denominar vectores anidados. Hay que tener en cuenta que este vector es de cuatro elementos, no cinco, ya que el vector anidado cuenta como un elemento. Para conocer el número de elementos de un vector se puede recurrir a la función length.

Cuando un vector contiene más de un tipo de dato, como es el caso, esto son de tipo Array{Any,1}, mientras que cuando son del mismo el vector es del tipo específico. Por ejemplo, en el caso de un vector de enteros sera se tipo Array{Int64,1}. Información que se puede ver con la función typeof. El número después del tipo son las dimensiones.

Publicidad


Recorrer los elementos de un vector

El método más sencillo para recorrer los elementos de un vector son los bucles for. Para lo que se puede utilizar el operador in o ∈

for value ∈ datos
    println(value)
end

Ahora, en el caso de que sea necesario acceder al elemento para modificarlos se puede hacer directamente de la siguiente manera.

for i ∈ 1:length(datos)
    datos[i] *= 2
end

Aunque posiblemente sea más fácil usar la función que tiene definida Julia para este caso eachindex. Una función que nos devuelve todos los índices.

for i ∈ eachindex(datos)
    datos[i] *= 2
end

Operador dos puntos

Para acceder a una subvector de otro se puede usar el operador dos puntos. Con lo que es posible recorrer los elementos desde la posición inicial a la final en los pasos indicados. A continuación, se puede ver como se recorre los vectores de la tercera a la cuarta posición y de la tercera a la segunda (invirtiendo el orden).

datos = [1,2,3,4,5]
datos[3:4] # [3,4]
datos[3:-1:2] # [3,2]

Si se quiere llegar al último y no se conoce la longitud de los vectores siempre se puede usar la palabra clave end para indicar esto.

datos[3:end] # [3,4,5]

Finalmente, el operador dos puntos permite hacer copias de los vectores. Generando un nuevo vector igual al original. Lo que nos permite modificar los dos de manera independiente

datos = [1,2,3,4,5]
datos2 = datos[:]
datos2[2] = 0
println(datos) # [1, 2, 3, 4, 5]
println(datos2) # [1, 0, 3, 4, 5]

Si hubiésemos asignado en datos2 el valor de datos el resultado sería diferente, ambos vectores se verían modificados porque realmente apuntan al mismo objeto.

datos = [1,2,3,4,5]
datos2 = datos
datos2[2] = 0
println(datos) # [1, 0, 3, 4, 5]
println(datos2) # [1, 0, 3, 4, 5]

Cuando dos vectores son iguales

El punto anterior nos puede llevar a pensar qué pasa con los vectores al asignarlos a una variable. Al asignar un vector a una variable lo que sucede es que se asigna la dirección de memoria a esta variable, no el valor. Por lo que sí se asigna un vector a otra variable ambos contendrán el mismo objeto.

Para comprobar si dos vectores apuntan al mismo objeto se puede usar el operador igualdad === o ≡. Un operador que no compara el contenido, sino que es el mismo objeto. Esto es, si se crean dos objetos con el mismo contenido se obtiene falso como resultado

v_1 = [1,2,3]
v_2 = [1,2,3]

v_1 ≡ v_2 # false

Pero si apunta al mismo objeto se obtendrá verdadero.

v_1 = [1,2,3]
v_2 = v_1

v_1 ≡ v_2 # true

Un comportamiento diferente al que se observa en los tipos primitivos, donde dos variables con el mismo valor son iguales.

v_1 = "Hola"
v_2 = "Hola"

v_1 ≡ v_2 # true

Publicidad


Agregar y eliminar elementos en un vector

Julia dispone de múltiples funciones para trabajar con los elementos de un vector y modificarlo. El método para agregar un elemento es push!, con el que se añade un elemento al final del mismo.

datos = [1,2,3]
push!(datos ,10) # [1,2,3,10]

Para concatenar vectores se puede recurrir a append!, función con la que se agrega al primer vector el contenido del segundo.

datos = [1,2,3]
append!(datos, [3, 4]) # [1,2,3,3,4]

Es importante diferencia uno de otro, ya que si se usa push! para agregar un vector este se añadirá como tal al final. Siempre y cuando el tipo de dato del primer vector lo soporte, algo que no sería válido en el caso anterior. Por ejemplo, el siguiente código no funciona

datos = [1,2,3]
push!(datos, [3, 4]) # error

Esto es porque datos es de tipo Array{Int64,1} y debería ser de tipo Array{Any,1} para poder admitir números y vectores.

Para insertar hay varias funciones:

  • pop! para eliminar el último valor y devolverlo
  • popfirst! para eliminar el primer valor y devolverlo
  • splice! para eliminar en una posición dada y devolver el valor eliminado
  • deleteat! para eliminar en una posición dada devolviendo el propio vector, una alternativa para cuando no necesitamos el valor eliminado

Lo que se puede ver en el siguiente ejemplo

data = [1, 2, 3, 4, 5, 6]

último = pop!(data)
primero = popfirst!(data)
el_2º = splice!(data, 2)

deleteat!(data, 2)

El operador .

Para aplicar sobre cada uno de los elementos de un vector es necesario usar la versión modificado con un punto de los operadores. Por ejemplo, si intentamos elevar un vector al cuadrado con ^ obtendremos un error, es necesario usar el operador .^.

[1,2,3] .^ 3 # [1, 8, 27]

Recordemos que si omitimos el punto tendremos un error. Algo que también se puede aplicar a las funciones, aunque en este caso el punto se sitúa al final del nombre. Así para poner mayúsculas a la primera letra de un vector de cadenas se puede hacer

uppercasefirst.(["hola", "julia"]) # ["Hola", "Julia"]

Recordando que no indicar el punto provocaría que la función fallase, ya que no soporta entradas de tipo vector.

Tuplas

Las tuplas son básicamente vectores inmutables. Esto es, una vez definida una dupla no es posible modificar esta, ni ninguno de sus valores. A diferencia de los vectores las tuplas se crean escribiendo los vectores entre paréntesis. Así una tupla podría ser:

tupla = (1,2,3)

Aunque hay un caso especial, las tuplas de un elemento, en las que es necesario escribir una coma después del valor, esto es (1,). Ya que algo como (1) no seria una tupla.

El acceso a un elemento es exactamente igual que en los vectores, pero no se pueden modificar.

En este punto se puede notar que las funciones que devuelven mas de un valor lo que realmente devuelven es una tupla.

Publicidad


Diccionarios

Los diccionarios son una generalización de los vectores donde en lugar de usar un entero para hacer referencia a los valores se unan claves. Esto es, una clave que se asocia con un valor. Por lo que las claves no se pueden repetir. Las claves pueden ser de cualquier tipo de dato que tenga una representación única.

La creación de un diccionario se hace con el constructor Dict. Siendo la forma más sencilla crear un objeto vacío y añadir los valores. Ya que los diccionarios son mutables.

dic = Dict()
dic["uno"] = 1
dic["dos"] = 2

En este ejemplo se ha creado un diccionario con dos elementos. Las claves son “uno” y “dos”, las cuales están asociadas respectivamente con los valores 1 y 2. Este diccionario también se puede crear de la siguiente manera.

dic = Dict("uno" => 1, "dos" => 2)

Aunque el resultado no es lo mismo. Ahora se tiene un diccionario de tipo Dict{String,Int64}, mientras que antes el tipo era Dict{Any,Any}. Algo que hay que tener en cuenta ya que en el segundo caso no se puede añadir una clave que no sea una cadena de texto ni un valor que no sea entero. Julia dará un error. Algo que no es un problema en el primer caso ya que tanto las claves como el valor pueden ser de cualquier tipo.

Una de las funciones más interesante para los diccionarios es keys, con las que se puede obtener un vector con los nombres de las claves de este. Algo que se puede usar para iterar sobre el diccionario o comprobar que una clave existe.

Estructurar de datos en Julia

Al estudiar los vectores en Julia, junto a las tuplas y diccionarios, nos podemos dar cuenta que el lenguaje cuenta con herramientas avanzadas. Algo facilitar mucho el trabajo.

Publicaciones de la serie ¡Hola Julia!

  1. ¡Hola Julia!
  2. Primeros pasos con Julia
  3. Cadenas de texto en Julia
  4. Bucles en Julia
  5. Funciones en Julia
  6. Vectores, tuplas y diccionarios en Julia
  7. Estructuras en Julia
  8. Utilizar los tipos en Julia
  9. Tipos de datos en Julia
  10. Tipos y funciones paramétricos en Julia
  11. Introducción a los DataFrames en Julia
  12. Obtener información básica de los DataFrames de Julia
  13. El tipo de dato Missing de Julia
  14. Columnas en DataFrames de Julia
  15. Filas en DataFrames de Julia
  16. Combinar DataFrames en Julia
  17. Guardar y leer archivos CSV en Julia
  18. Guardar y leer archivos Excel en Julia
  19. Introducción a Genie
  20. Libros sobre Julia

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
  • Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane
  • Hardening avanzado de NGINX: CSP, OCSP Stapling y defensa en profundidad
  • Nuevo generador y verificador de hashes en el laboratorio de aplicaciones de Analytics Lane
  • Nueva simulación de la estrategia Martingala en ruleta en el laboratorio de aplicaciones de Analytics Lane
  • Exactitud, precisión, recall… y los errores que cometemos al interpretarlas en proyectos reales
  • Nuevo simulador del problema de Monty Hall en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador interactivo de K-Means en el laboratorio de aplicaciones de Analytics Lane
  • Por qué los chatbots de inteligencia artificial parecen estar siempre de acuerdo contigo – Conversar con una inteligencia artificial – Parte I

Publicado en: Julia

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 Por Daniel Rodríguez

Nuevo simulador de regresión logística en el laboratorio de aplicaciones de Analytics Lane

abril 17, 2026 Por Daniel Rodríguez

Nuevo simulador de regresión lineal con ruido en el laboratorio de aplicaciones de Analytics Lane

abril 16, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane publicado el abril 20, 2026 | en Noticias
  • Creación de gráficos de barras y gráficos de columnas con Seaborn publicado el julio 18, 2023 | en Python
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • Inclusión de barras de error en Matplotlib publicado el octubre 17, 2022 | en Python
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto