{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Algunas Estructuras de Datos\n",
"\n",
"* Para más ejemplos consultar [Introducción a la programación en Julia](https://introajulia.org/#chap10).\n",
"* Para más comparaciones con Python [Julia for Pythonistas](https://colab.research.google.com/github/ageron/julia_notebooks/blob/master/Julia_for_Pythonistas.ipynb).\n",
"\n",
"|Julia|Python\n",
"|-----|------\n",
"|`np = pyimport(\"numpy\")` | `import numpy as np`\n",
"|`using PyPlot` | `from pylab import *`\n",
"|`1:10` | `range(1, 11)`\n",
"|`1:2:10`
or
`range(1, 11, 2)` | `range(1, 11, 2)`\n",
"|`1.2:0.5:10.3`
or
`range(1.2, 10.3, step=0.5)` | `np.arange(1.2, 10.3, 0.5)`\n",
"|`range(1, 10, length=3)` | `np.linspace(1, 10, 3)`\n",
"|`collect(1:5)`
or
`[i for i in 1:5]` | `list(range(1, 6))`
or
`[i for i in range(1, 6)]`\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Arreglos (similar a las listas de Python)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 'd']\n",
"['d', 'e', 'f']\n",
"t original ['a', 'b', 'c', 'd', 'e', 'f']\n",
"w copia ['a', 'x', 'y', 'd', 'e', 'f']\n",
"s hace referencia al original ['a', 'W', 'H', 'd', 'e', 'f']\n",
"t ha sido modificado mediante s ['a', 'W', 'H', 'd', 'e', 'f']\n"
]
}
],
"source": [
"#Creamos un arreglo\n",
"t = ['a', 'b', 'c', 'd', 'e', 'f'];\n",
"\n",
"println(t[1:4])\n",
"println(t[4:end])\n",
"\n",
"#crea una copia del arreglo\n",
"w = t[:]\n",
"s = t\n",
"println(\"t original \", t)\n",
"w[2:3] = ['x', 'y'];\n",
"println(\"w copia \", w)\n",
"s[2:3] = ['W', 'H'];\n",
"println(\"s hace referencia al original \", s)\n",
"println(\"t ha sido modificado mediante s \", t)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sintaxis de punto\n",
"\n",
"Para cada operador binario, por ejemplo *, existe un operador punto .* que define la operación * para cada elemento del arreglo. [3, 4, 5] * 2 no está definido, pero [3, 4, 5] .* 3 se define como [3 * 2, 4 * 2, 5 * 2]"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9, 12, 15]\n",
"[27, 64, 125]\n",
"216\n"
]
}
],
"source": [
"println([3, 4, 5] .* 3 )\n",
"println([3, 4, 5] .^ 3 )\n",
"println(sum([3, 4, 5] .^ 3))"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[12, 9]\n"
]
}
],
"source": [
"# El operador punto permite aplicar a cada elemento de la lista una\n",
"# función específica\n",
"println(sum.(\n",
" [\n",
" [3, 4, 5], \n",
" [1, 2, 3] .+ 1\n",
" ]\n",
" )\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[\"LORENA\", \"NATALIA\", \"LAURA\"]\n"
]
}
],
"source": [
"unas = uppercase.([\"lorena\", \"natalia\", \"laura\"]);\n",
"println(unas)"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Int64,1}:\n",
" 3\n",
" 8\n",
" 15"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = [1, 2, 3]\n",
"b = [3, 4, 5]\n",
"a .* b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Diccionarios\n",
"\n",
"[Lectura Recomendada para más ejemplos](https://en.wikibooks.org/wiki/Introducing_Julia/Dictionaries_and_sets)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Dict{String,Any} with 3 entries:\n",
" \"edad\" => 26\n",
" \"cursos\" => [\"Python\", \"Django\", \"Julia\"]\n",
" \"nombre\" => \"Natalia\""
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# En python diccionario = {'nombre' : 'Natalia', 'edad' : 26, 'cursos': ['Python','Django','Julia'] }\n",
"\n",
"diccionario = Dict(\"nombre\" => \"Natalia\", \"edad\" => 26, \"cursos\" => [\"Python\",\"Django\",\"Julia\"])"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dict{String,Any}(\"antioquia\" => 5,\"caldas\" => 5,\"supía\" => \"nunca\",\"bogotá\" => 2)\n",
"\n",
"¿Cuántas veces has estado en caldas? 5\n",
"¿Cuántas veces has estado en supía? nunca\n",
"¿Caldas pertenece a la lista de lugares? true\n",
"¿Cartagena NO pertenece a la lista de lugares? true\n"
]
}
],
"source": [
"lugares = Dict(\"antioquia\" => 5, \"bogotá\" => 2, \n",
" \"caldas\" => 5, \"supía\" => \"nunca\")\n",
"\n",
"println(lugares, \"\\n\")\n",
"println(\"¿Cuántas veces has estado en caldas? \", lugares[\"caldas\"])\n",
"println(\"¿Cuántas veces has estado en supía? \", lugares[\"supía\"])\n",
"println(\"¿Caldas pertenece a la lista de lugares? \", \"caldas\" ∈ keys(lugares))\n",
"println(\"¿Cartagena NO pertenece a la lista de lugares? \", \"cartagena\" ∉ keys(lugares))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dict{String,Integer}(\"medellín\" => 5,\"bello\" => 1,\"sabaneta\" => 8)\n",
"5\n"
]
}
],
"source": [
"#Es posible definir el tipo de dato\n",
"municipios = Dict{String,Integer}(\"bello\" => 1, \"medellín\" => 2, \n",
" \"sabaneta\" => 8, \"medellín\" => 5)\n",
"\n",
"println(municipios)\n",
"println(municipios[\"medellín\"])"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dict{String,Integer}(\"medellín\" => 5,\"rionegro\" => 21,\"copacabana\" => 23,\"bello\" => 1,\"sabaneta\" => 8)\n",
"\n",
"Dict{String,Integer}(\"medellín\" => 5,\"copacabana\" => 23,\"bello\" => 1,\"sabaneta\" => 8)\n",
"\n"
]
}
],
"source": [
"# agregar miembros \n",
"municipios[\"copacabana\"] = 23\n",
"municipios[\"rionegro\"] = 21\n",
"println(municipios, \"\\n\")\n",
"\n",
"#Eliminar miembros\n",
"delete!(municipios, \"rionegro\")\n",
"println(municipios, \"\\n\")\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"El seno de 90 grados es 1.0\n",
"El seno de 45 grados es 0.7071067811865476\n",
"El seno de 32 grados es nothing\n",
"\n",
"Dict(\"320\" => -0.6427876096865394,\"65\" => 0.9063077870366499,\"155\" => 0.42261826174069944,\"335\" => -0.42261826174069944,\"75\" => 0.9659258262890683,\"50\" => 0.766044443118978,\"190\" => -0.17364817766693036,\"270\" => -1.0,\"290\" => -0.9396926207859084,\"115\" => 0.9063077870366499,\"340\" => -0.3420201433256687,\"10\" => 0.17364817766693036,\"250\" => -0.9396926207859084,\"120\" => 0.8660254037844386,\"230\" => -0.766044443118978,\"265\" => -0.9961946980917455,\"215\" => -0.573576436351046,\"305\" => -0.8191520442889918,\"255\" => -0.9659258262890683,\"25\" => 0.42261826174069944,\"160\" => 0.3420201433256687,\"275\" => -0.9961946980917455,\"5\" => 0.08715574274765818,\"280\" => -0.984807753012208,\"90\" => 1.0,\"175\" => 0.08715574274765818,\"225\" => -0.7071067811865476,\"205\" => -0.42261826174069944,\"195\" => -0.25881904510252074,\"315\" => -0.7071067811865476,\"150\" => 0.5,\"55\" => 0.8191520442889918,\"330\" => -0.5,\"285\" => -0.9659258262890683,\"310\" => -0.766044443118978,\"245\" => -0.9063077870366499,\"350\" => -0.17364817766693036,\"20\" => 0.3420201433256687,\"325\" => -0.573576436351046,\"80\" => 0.984807753012208,\"360\" => 0.0,\"125\" => 0.8191520442889918,\"110\" => 0.9396926207859084,\"185\" => -0.08715574274765818,\"70\" => 0.9396926207859084,\"165\" => 0.25881904510252074,\"140\" => 0.6427876096865394,\"300\" => -0.8660254037844386,\"0\" => 0.0,\"200\" => -0.3420201433256687,\"60\" => 0.8660254037844386,\"345\" => -0.25881904510252074,\"235\" => -0.8191520442889918,\"130\" => 0.766044443118978,\"260\" => -0.984807753012208,\"220\" => -0.6427876096865394,\"210\" => -0.5,\"35\" => 0.573576436351046,\"240\" => -0.8660254037844386,\"15\" => 0.25881904510252074,\"100\" => 0.984807753012208,\"40\" => 0.6427876096865394,\"170\" => 0.17364817766693036,\"45\" => 0.7071067811865476,\"295\" => -0.9063077870366499,\"145\" => 0.573576436351046,\"95\" => 0.9961946980917455,\"85\" => 0.9961946980917455,\"180\" => 0.0,\"135\" => 0.7071067811865476,\"355\" => -0.08715574274765818,\"105\" => 0.9659258262890683,\"30\" => 0.5)\n"
]
}
],
"source": [
"# sind calcula la fn seno con grados\n",
"# \n",
"seno = Dict(string(i) => sind(i) for i = 0:5:360)\n",
"println(\"El seno de 90 grados es \", seno[\"90\"])\n",
"println(\"El seno de 45 grados es \", get(seno, \"45\", 0))\n",
"println(\"El seno de 32 grados es \", get(seno, \"32\", nothing), \"\\n\")\n",
"\n",
"println(seno)\n",
"#for i = 0:5:360\n",
"# println(i) \n",
"#end"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"El valor del simbolo z es: 1\n"
]
}
],
"source": [
"# Diccionario de Simbolos\n",
"\n",
"midiccionario = Dict(:x => 5, :y => 3, :z => 1)\n",
"println(\"El valor del simbolo z es: \", midiccionario[:z])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tuplas (Similar a Python)\n",
"\n",
"Estas son tipos de arreglo inmutables. Una vez creadas no es posible agregar o quitar elementos."
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(\"Medellín\", \"Envigado\", \"Sabaneta\", \"Caldas\", \"Barbosa\", \"Copacabana\", \"La Estrella\", \"Bello\", \"Itagüí\", \"Girardota\")\n",
"(\"Envigado\", \"Sabaneta\", \"Caldas\", \"La Estrella\", \"Itagüí\")\n",
"(32, 'a', \"venecia\", π)\n",
"(\"Medellín\",)\n"
]
}
],
"source": [
"amva = \"Medellín\",\"Envigado\",\"Sabaneta\",\"Caldas\",\"Barbosa\",\"Copacabana\",\"La Estrella\", \"Bello\", \"Itagüí\", \"Girardota\"\n",
"println(amva)\n",
"\n",
"#tambien se pueden usar paréntesis\n",
"amvasur = (\"Envigado\",\"Sabaneta\",\"Caldas\",\"La Estrella\", \"Itagüí\",)\n",
"println(amvasur)\n",
"\n",
"#se puede usar el constructor tuple\n",
"mitupla = tuple(32, 'a', \"venecia\", pi)\n",
"println(mitupla)\n",
"\n",
"#para crear una tupla con un solo elemento se debe incluir una coma al final\n",
"capitalAntioquia = (\"Medellín\",)\n",
"println(capitalAntioquia)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.5.3",
"language": "julia",
"name": "julia-1.5"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}