{ "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 }