{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Iteración usando for\n", "===\n", "\n", "* Duración de la lección: 14:09 min" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cat 3\n", "window 6\n", "door 4\n", "abcdefg 7\n" ] } ], "source": [ "#\n", "# Iteración sobre los elementos de una lista\n", "# ===============================================\n", "#\n", "words = [\"cat\", \"window\", \"door\", \"abcdefg\"]\n", "for word in words:\n", " print(word, len(word))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n", "d\n" ] } ], "source": [ "#\n", "# Iteración sobre los elementos de una tupla\n", "# ===============================================\n", "#\n", "letters_tuple = (\"a\", \"b\", \"c\", \"d\")\n", "for letter in letters_tuple:\n", " print(letter)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "e\n", "i\n", "o\n", "u\n" ] } ], "source": [ "#\n", "# Iteración sobre un string\n", "# ===============================================\n", "#\n", "for vowel in \"aeiou\":\n", " print(vowel)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#\n", "# Iteración sobre un entero (no iterable)\n", "# ===============================================\n", "#" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "#\n", "# Iteración sobre un diccionario\n", "# ===============================================\n", "#\n", "my_dict = {\n", " \"a\": 1,\n", " \"b\": 2,\n", " \"c\": 3,\n", "}\n", "\n", "for element in my_dict:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "#\n", "# Iteración sobre las claves del diccionario\n", "# ===============================================\n", "#\n", "my_dict = {\n", " \"a\": 1,\n", " \"b\": 2,\n", " \"c\": 3,\n", "}\n", "\n", "for key in my_dict.keys():\n", " print(key)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "#\n", "# Iteración sobre los valores del diccionario\n", "# ===============================================\n", "#\n", "my_dict = {\n", " \"a\": 1,\n", " \"b\": 2,\n", " \"c\": 3,\n", "}\n", "\n", "for value in my_dict.values():\n", " print(value)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('a', 1)\n", "('b', 2)\n", "('c', 3)\n" ] } ], "source": [ "#\n", "# Iteración sobre los items del diccionario\n", "# ===============================================\n", "#\n", "my_dict = {\n", " \"a\": 1,\n", " \"b\": 2,\n", " \"c\": 3,\n", "}\n", "\n", "for item in my_dict.items():\n", " print(item)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n" ] } ], "source": [ "#\n", "# Iteración usando range()\n", "# ===============================================\n", "#\n", "for index in range(4):\n", " print(index)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "range(0, 5)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#\n", "# objeto range()\n", "#\n", "range(5)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#\n", "# Un rango puede convertirse en una lista\n", "# o una tupla para la visualización de su\n", "# contenido.\n", "#\n", "list(range(5))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(range(5))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0, 1, 2, 3, 4)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#\n", "# Transformación del resultado del iterador\n", "# a una tupla\n", "#\n", "tuple(range(5))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-4, -3, -2, -1, 0, 1, 2, 3, 4, 5)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#\n", "# El rango puede empezar en un valor negativo.\n", "#\n", "tuple(range(-4, 6))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5, 6, 7, 8, 9, " ] } ], "source": [ "#\n", "# El argumento end indica que al final del print\n", "# se imprime ', ' y no retorno de carro\n", "#\n", "for i in range(5, 10):\n", " print(i, end=\", \")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0, 3, 6, 9, " ] } ], "source": [ "#\n", "# De 0 a 10 cada 3\n", "#\n", "for i in range(0, 10, 3):\n", " print(i, end=\", \")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-10, -40, -70, " ] } ], "source": [ "#\n", "# Range con valores negativos.\n", "#\n", "for i in range(-10, -100, -30):\n", " print(i, end=\", \")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 a\n", "1 b\n", "2 c\n", "3 d\n", "4 e\n" ] } ], "source": [ "#\n", "# Enumeración de los elementos en un ciclo for\n", "# ===============================================\n", "#\n", "# >>> MAL! <<<\n", "#\n", "list_a = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "for index in range(len(list_a)):\n", " print(index, list_a[index])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 a\n", "1 b\n", "2 c\n", "3 d\n", "4 e\n" ] } ], "source": [ "#\n", "# Bien!\n", "#\n", "for index, element in enumerate(list_a):\n", " print(index, element)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0, 'a')\n", "(1, 'b')\n", "(2, 'c')\n", "(3, 'd')\n", "(4, 'e')\n" ] } ], "source": [ "for tupla in enumerate(list_a):\n", " print(tupla)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">>> first element\n", "b\n", "c\n", "d\n", ">>> last element\n" ] } ], "source": [ "#\n", "# Exclusión del primer o ultimo elemento.\n", "#\n", "list_a = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n", "\n", "for element in list_a:\n", "\n", " if element == list_a[0]:\n", " print(\">>> first element\")\n", " continue\n", "\n", " if element == list_a[-1]:\n", " print(\">>> last element\")\n", " continue\n", "\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b\n", "c\n", "d\n" ] } ], "source": [ "#\n", "# El primer y el ultimo elemento no se\n", "# procesan en el for\n", "#\n", "for element in list_a[1:-1]:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hola!\n", "Hola!\n", "Hola!\n", "Hola!\n" ] } ], "source": [ "#\n", "# Ciclo for con contador tácito\n", "#\n", "for _ in range(4):\n", " print(\"Hola!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comandos break y continue" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "5\n", "6\n", "7\n" ] } ], "source": [ "for n in range(1, 10):\n", " if n < 4:\n", " #\n", " # Reinicia el ciclo for sin pasar\n", " # por el resto del cuerpo\n", " #\n", " continue\n", " #\n", " # Solo pasa por aca cuando n >= 4.\n", " #\n", " print(n)\n", " if n > 6:\n", " #\n", " # Interrupe el ciclo cuando n > 6.\n", " #\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comando pass" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "#\n", "# El cuerpo del for no tiene código. El ciclo\n", "# for se ejecuta pero no hace nada.\n", "#\n", "for _ in range(5):\n", " pass" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "8\n", "9\n" ] } ], "source": [ "for index in range(10):\n", " if index > 2 and index < 8:\n", " pass\n", " else:\n", " print(index)" ] } ], "metadata": { "kernel_info": { "name": "python3" }, "kernelspec": { "display_name": "Python 3.10.7 ('.venv': venv)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.7" }, "nteract": { "version": "0.12.3" }, "toc-autonumbering": false, "toc-showcode": false, "toc-showmarkdowntxt": false, "toc-showtags": false, "vscode": { "interpreter": { "hash": "99683f87c1354598af39114791cc78b29c5617e49c4bfa4c5fb7492534eeeb87" } } }, "nbformat": 4, "nbformat_minor": 4 }