{"id":41,"date":"2025-06-05T17:24:00","date_gmt":"2025-06-05T17:24:00","guid":{"rendered":"https:\/\/vicfolio.com\/blog\/?p=41"},"modified":"2025-06-09T08:01:14","modified_gmt":"2025-06-09T08:01:14","slug":"de-principiante-a-experto-domina-las-comprehensions-de-listas-diccionarios-y-sets-en-python","status":"publish","type":"post","link":"https:\/\/vicfolio.com\/blog\/?p=41","title":{"rendered":"De principiante a experto: Domina las comprehensions de listas, diccionarios y sets en Python"},"content":{"rendered":"\n<p>He dise\u00f1ado este tutorial para que los desarrolladores avancen desde el nivel b\u00e1sico hasta la experticia en el uso de comprehensions. A lo largo del art\u00edculo, exploraremos las comprehensions de listas, diccionarios y sets, incluyendo ejemplos pr\u00e1cticos, errores comunes y soluciones.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Fundamentos: \u00bfQu\u00e9 son las comprehensions y por qu\u00e9 usarlas?<\/strong><\/h2>\n\n\n\n<p>Las comprehensions son una forma eficiente de crear estructuras de datos en Python, como listas, diccionarios y sets, a partir de otros datos. La sintaxis b\u00e1sica es la siguiente:<\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">comprehension = [expression for variable in iterable]<\/pre>\n\n\n\n<p>Donde:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>expression<\/code> es el valor que se asigna a cada elemento.<\/li>\n\n\n\n<li><code>variable<\/code> es el nombre del iterador.<\/li>\n\n\n\n<li><code>iterable<\/code> es la fuente de los elementos.<\/li>\n<\/ul>\n\n\n\n<p><strong>Ventajas de usar comprehensions:<\/strong><br>&#x2705; M\u00e1s legibles que los bucles tradicionales.<br>&#x2705; M\u00e1s eficientes en t\u00e9rminos de rendimiento.<br>&#x2705; Ideales para procesar grandes vol\u00famenes de datos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. List comprehensions: desde b\u00e1sicas hasta anidadas<\/strong><\/h2>\n\n\n\n<p>Las list comprehensions son una de las formas m\u00e1s comunes de utilizar comprehensions. Veamos algunos ejemplos:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo b\u00e1sico<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 3, 4, 5]\nsquared_numbers = &#91;x**2 for x in numbers]\nprint(squared_numbers)  # Output: &#91;1, 4, 9, 16, 25]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Con condici\u00f3n<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits = &#91;'apple', 'banana', 'cherry']\nlong_fruits = &#91;fruit for fruit in fruits if len(fruit) &gt; 5]\nprint(long_fruits)  # Output: &#91;'banana', 'cherry']<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Anidadas<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 3, 4, 5]\nsquared_numbers = &#91;&#91;x**2 for x in numbers] for _ in range(3)]\nprint(squared_numbers)  # Output: &#91;&#91;1, 4, 9, 16, 25], &#91;1, 4, 9, 16, 25], &#91;1, 4, 9, 16, 25]]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicio pr\u00e1ctico<\/strong><\/h3>\n\n\n\n<p><em>Encuentra la ra\u00edz cuadrada de los n\u00fameros pares en la lista.<\/em><\/p>\n\n\n\n<p><strong>Soluci\u00f3n:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 3, 4, 5]\nsquared_numbers = &#91;x**0.5 for x in numbers if x % 2 == 0]\nprint(squared_numbers)  # Output: &#91;1.4142135623730951, 2.0]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Dictionary comprehensions con casos pr\u00e1cticos<\/strong><\/h2>\n\n\n\n<p>Las dictionary comprehensions se utilizan para crear diccionarios de manera concisa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo b\u00e1sico<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 3, 4, 5]\nsquared_dict = {x: x**2 for x in numbers}\nprint(squared_dict)  # Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Con condici\u00f3n<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>students = &#91;('John', 20), ('Jane', 21), ('Bob', 22)]\nage_dict = {name: age for name, age in students if age &gt;= 21}\nprint(age_dict)  # Output: {'Jane': 21, 'Bob': 22}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicio pr\u00e1ctico<\/strong><\/h3>\n\n\n\n<p><em>Crea un diccionario que relacione los nombres de los meses con su n\u00famero correspondiente.<\/em><\/p>\n\n\n\n<p><strong>Soluci\u00f3n:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>months = &#91;'January', 'February', 'March']\nmonth_dict = {month: i for i, month in enumerate(months, start=1)}\nprint(month_dict)  # Output: {'January': 1, 'February': 2, 'March': 3}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Set comprehensions y cu\u00e1ndo aplicarlas<\/strong><\/h2>\n\n\n\n<p>Los sets son colecciones sin elementos duplicados. Las set comprehensions permiten crearlos de manera eficiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo b\u00e1sico<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 2, 3, 4]\nunique_numbers = {x for x in numbers}\nprint(unique_numbers)  # Output: {1, 2, 3, 4}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Con condici\u00f3n<\/strong><\/h3>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits = &#91;'apple', 'banana', 'apple', 'cherry']\nunique_fruits = {fruit for fruit in fruits if fruit != 'apple'}\nprint(unique_fruits)  # Output: {'banana', 'cherry'}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicio pr\u00e1ctico<\/strong><\/h3>\n\n\n\n<p><em>Encuentra los n\u00fameros que est\u00e1n entre 2 y 4 (inclusive).<\/em><\/p>\n\n\n\n<p><strong>Soluci\u00f3n:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;1, 2, 3, 4, 5]\nunique_numbers = {x for x in numbers if 2 &lt;= x &lt;= 4}\nprint(unique_numbers)  # Output: {2, 3, 4}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Comparaci\u00f3n de rendimiento vs loops tradicionales<\/strong><\/h2>\n\n\n\n<p>Las comprehensions suelen ser m\u00e1s r\u00e1pidas que los bucles tradicionales. Veamos un ejemplo:<\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import timeit\n\nnumbers = list(range(10000))\n\ndef comprehension(numbers):\n    return &#91;x**2 for x in numbers]\n\ndef loop(numbers):\n    result = &#91;]\n    for x in numbers:\n        result.append(x**2)\n    return result\n\ncomprehension_time = timeit.timeit(lambda: comprehension(numbers), number=1000)\nloop_time = timeit.timeit(lambda: loop(numbers), number=1000)\n\nprint(f\"Comprehension time: {comprehension_time:.6f} seconds\")\nprint(f\"Loop time: {loop_time:.6f} seconds\")\n\n# Output t\u00edpico:\n# Comprehension time: 1.342222 seconds\n# Loop time: 2.541111 seconds<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicio pr\u00e1ctico<\/strong><\/h3>\n\n\n\n<p><em>Calcula la suma total de los elementos en el resultado de elevar al cuadrado una lista de n\u00fameros.<\/em><\/p>\n\n\n\n<p><strong>Soluci\u00f3n:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>total_sum = sum(result)\nprint(total_sum)  # Output: 49001005000<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Patrones avanzados y t\u00e9cnicas pro<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>T\u00e9cnicas avanzadas<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Usando <code>zip<\/code> y <code>map<\/code><\/strong> para comprehensions m\u00e1s complejas.<\/li>\n\n\n\n<li><strong>Funciones <code>lambda<\/code><\/strong> dentro de comprehensions.<\/li>\n\n\n\n<li><strong>Comprehensions anidadas<\/strong> para estructuras de datos profundas.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejercicio pr\u00e1ctico<\/strong><\/h3>\n\n\n\n<p><em>Dada una lista de tuplas, calcula la suma total de las dos columnas despu\u00e9s de elevar cada n\u00famero al cuadrado.<\/em><\/p>\n\n\n\n<p><strong>Soluci\u00f3n:<\/strong><\/p>\n\n\n\n<p>python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers = &#91;(1, 2), (3, 4), (5, 6)]\nsquared_numbers = &#91;&#91;x**2 for x in pair] for pair in numbers]\ntotal_sum = sum(sum(pair) for pair in squared_numbers)\nprint(total_sum)  # Output: 91<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Resumen final (Cheat Sheet)<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tipo de Comprehension<\/th><th>Sintaxis B\u00e1sica<\/th><th>Ejemplo<\/th><\/tr><\/thead><tbody><tr><td><strong>List Comprehension<\/strong><\/td><td><code>[x for x in iterable]<\/code><\/td><td><code>[x*2 for x in range(5)]<\/code> \u2192 <code>[0, 2, 4, 6, 8]<\/code><\/td><\/tr><tr><td><strong>Dict Comprehension<\/strong><\/td><td><code>{k:v for k,v in iterable}<\/code><\/td><td><code>{x: x**2 for x in [1,2,3]}<\/code> \u2192 <code>{1:1, 2:4, 3:9}<\/code><\/td><\/tr><tr><td><strong>Set Comprehension<\/strong><\/td><td><code>{x for x in iterable}<\/code><\/td><td><code>{x%3 for x in [1,2,3,4]}<\/code> \u2192 <code>{0, 1, 2}<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusi\u00f3n<\/strong><\/h2>\n\n\n\n<p>Las comprehensions son una herramienta poderosa en Python que mejora la legibilidad y eficiencia del c\u00f3digo. Con este conocimiento, estar\u00e1s preparado para aplicarlas en tus proyectos y optimizar tu c\u00f3digo.<\/p>\n\n\n\n<p>\u00a1Espero que este art\u00edculo te haya sido \u00fatil! Si tienes dudas, d\u00e9jalas en los comentarios. &#x1f680;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>He dise\u00f1ado este tutorial para que los desarrolladores avancen desde el nivel b\u00e1sico hasta la experticia en el uso de comprehensions. A lo largo del art\u00edculo, exploraremos las comprehensions de listas, diccionarios y sets, incluyendo ejemplos pr\u00e1cticos, errores comunes y soluciones. 1. Fundamentos: \u00bfQu\u00e9 son las comprehensions y por qu\u00e9 usarlas? Las comprehensions son una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":42,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[5],"class_list":["post-41","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","tag-python"],"_links":{"self":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41"}],"version-history":[{"count":2,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions"}],"predecessor-version":[{"id":61,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions\/61"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/42"}],"wp:attachment":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}