{"id":2143,"date":"2020-06-24T16:35:41","date_gmt":"2020-06-24T21:35:41","guid":{"rendered":"https:\/\/naps.com.mx\/blog\/?p=2143"},"modified":"2020-06-29T14:27:35","modified_gmt":"2020-06-29T19:27:35","slug":"multilistas-en-python-listas-de-listas","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/multilistas-en-python-listas-de-listas\/","title":{"rendered":"Multilistas en Python: Listas de listas"},"content":{"rendered":"<p>En \u00e9ste art\u00edculo veremos qu\u00e9 son las multilistas en Python, c\u00f3mo se crean, y c\u00f3mo crear multilistas en Python usando expresiones generadoras.<\/p>\n<p><!--more--><\/p>\n<p>\u00c9ste art\u00edculo est\u00e1 tambi\u00e9n explicado en video. Encu\u00e9ntralo aqu\u00ed:<a href=\"https:\/\/youtu.be\/sDdaEEh9iGE\" target=\"_blank\" rel=\"noopener\">https:\/\/youtu.be\/sDdaEEh9iGE<\/a><\/p>\n<h2>Multilistas en Python: Listas de listas<\/h2>\n<p>En Python almacenamos un dato en una variable de \u00e9sta forma:<\/p>\n<p>dato = 5<\/p>\n<p>Se pueden guardar varios elementos en una misma estructura, por ejemplo en una lista, as\u00ed:<\/p>\n<p>lista = [5,6,7,8]<\/p>\n<p>Observamos que se utilizan corchetes para agrupar los datos, y comas para separarlos.<\/p>\n<p>Una lista puede contener cualquier dato, incluso a otra lista, as\u00ed (<a href=\"https:\/\/books.google.com.mx\/books?id=yhfdQgq8JF4C&amp;lpg=PA32&amp;dq=multi%20list%20in%20python&amp;pg=PA32#v=onepage&amp;q=multi%20list%20in%20python&amp;f=false\" target=\"_blank\" rel=\"noopener\">Martelli &amp; Ascher, 2002<\/a>):<\/p>\n<p>[[1,2,3],[4,5,6],[7,8,9]]<\/p>\n<p>El ejemplo anterior muestra una lista que a su vez contiene tres listas, cada una formada por tres datos num\u00e9ricos.<\/p>\n<h2>Creaci\u00f3n de multilistas en Python<\/h2>\n<p>Podemos agregar datos a una lista utilizando el m\u00e9todo <a href=\"https:\/\/naps.com.mx\/blog\/listas-en-python\/\">append<\/a>.<\/p>\n<pre class=\"lang:python decode:true \">lista = []\r\nlista.append([2,4,6])\r\nlista.append([8,10,12])\r\nprint (lista)<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>: Se crea una lista vac\u00eda (lista = []), y se le agrega una lista (lista.append([2,4,6])). El m\u00e9todo append a\u00f1ade un solo elemento al final de la lista, en \u00e9ste caso ese elemento es una lista con tres valores. En el ejemplo anterior, se tiene una lista que contiene dos listas. Si lo compar\u00e1semos al concepto de matrices, ser\u00eda una matriz de 2 filas y tres columnas.<\/p>\n<h3>Acceder al valor de una multilista<\/h3>\n<p>En el ejemplo anterior se cre\u00f3 la siguiente lista de listas:<\/p>\n<p>[[2,4,6],[8,10,12]]<\/p>\n<p>Si deseamos acceder al primer valor de la primera lista, entonces la instrucci\u00f3n ser\u00eda:<\/p>\n<p>valor = lista[0][0]<\/p>\n<p>Donde lista[0] ser refiere a la primera lista, por lo que lista[0][0] se refiere al primer elemento de la la multilista.<\/p>\n<h2>Creando listas de listas en Python usando for<\/h2>\n<p>En el siguiente ejemplo deseamos crear una multilista de 2 filas por 3 columnas:<\/p>\n<pre class=\"lang:python decode:true\">lista2 = []\r\nfor i in range(2):\r\n\tlista2.append([])\r\n\tfor j in range(3):\r\n\t\tlista2[i].append(0)\t\r\nprint (lista2)<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>: Creamos una lista vac\u00eda (lista2=[ ]), y usamos un <a href=\"https:\/\/naps.com.mx\/blog\/uso-de-for-en-python-usando-listas\/\">for<\/a> que vaya de 0 al n\u00famero de filas deseado (for i in range(2)). Dentro del for, agregamos a la lista un elemento que ser\u00e1 una lista vac\u00eda (lista2.append([ ]), y usamos un for que vaya de 0 al n\u00famero de columnas deseado (for j in range(3)). Dentro de ese segundo for, agregamos un cero, a la lista que est\u00e1 en el \u00faltimo elemento creado (lista2[i].append(0)).<\/p>\n<h2>Creando listas de listas en Python usando una expresi\u00f3n generadora<\/h2>\n<p>Usar una expresi\u00f3n generadora nos permite crear listas y generar los valores que ir\u00e1n dentro de ellas de forma sencilla.<\/p>\n<p>Ejemplo de una expresi\u00f3n generadora en Python<\/p>\n<pre class=\"lang:python decode:true \">iterador = ['Hello' for i in range(3)]\r\nprint (iterador)<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>. El c\u00f3digo anterior crea una variable \u00a0de tipo lista (iterador = [ ) y dentro se utiliza un for (for i in range(3) que va a ir de 0 a 2. A la izquierda de ese for, se especifica el valor que se va a generar, en \u00e9ste caso dentro de la lista. (&#8216;Hello&#8217;). El resultado es una lista con tres valores &#8216;Hello&#8217;.<\/p>\n<p>[&#8216;Hello&#8217;, &#8216;Hello&#8217;, &#8216;Hello&#8217;]<\/p>\n<h2>Expresi\u00f3n generadora que imprime una lista de los n\u00fameros 0 a 5<\/h2>\n<pre class=\"lang:python decode:true \">print ([i for i in range(6) ])<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>. En el ejemplo anterior, se da la orden de imprimir (print) una lista que contiene un for que va de 0 a 5 (for in range(6)). A la izquierda del for, se especifica el valor que se va a generar i, dentro de la lista.<\/p>\n<h2>Ejemplo: Crear una multilista en Python usando una expresi\u00f3n generadora<\/h2>\n<p>El siguiente c\u00f3digo crea una multilista de 2 por 3, rellen\u00e1ndola de ceros.<\/p>\n<pre class=\"lang:python decode:true \">lista3 = [[0 for col in range(3)] for row in range(2)]\r\nprint (lista3)<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>. Se crea una lista (lista3 = [ &#8230;] ) que contendr\u00e1 un for que va de 0 a 1, dando dos iteraciones. A la izquierda de ese for va el elemento que se va a generar dentro de la lista, y que es&#8230; una lista. Dentro de esa segunda lista va otro for que ira de 0 a 2, dando tres iteraciones. A la izquierda de ese for va el valor que se va a generar dentro de esa lista, un cero). El resultado: Se generan dos listas, y dentro de cada una de ellas se generan tres ceros.<\/p>\n<p><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/06\/Multilistas-en-python-.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2150\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/06\/Multilistas-en-python-.png\" alt=\"Multilistas en Python\" width=\"315\" height=\"58\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/06\/Multilistas-en-python-.png 586w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2020\/06\/Multilistas-en-python--300x55.png 300w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><\/a><\/p>\n<p>Ejemplo de lista de listas en Python: el usuario determina las dimensiones<\/p>\n<p>Considere el siguiente problema:<\/p>\n<p>Escriba un programa que tome 2 d\u00edgitos X,Y como entrada\u00a0y genere una multilista de X por Y donde el valor de cada elemento\u00a0sea el n\u00famero de fila<\/p>\n<p>Una entrada ser\u00eda:<br \/>\n3,3<\/p>\n<p>La salida de ser\u00eda<br \/>\n[[0,0,0],[1,1,1],[2,2,2]]<\/p>\n<p>Soluci\u00f3n:<\/p>\n<pre class=\"lang:python decode:true\">input_str = input(\"Dos numeros separados por coma\")\r\ndimension=[int(x) for x in input_str.split(',')]\r\nrowNum=dimension[0]\r\ncolNum=dimension[1]\r\nmultilista = [[row for col in range(colNum)] for row in range(rowNum)]\r\nprint (multilista)<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>. \u00a0Se pide al usuario dos n\u00fameros separados por comas (input (\u00abDos n\u00fameros separados por comas: \u00ab)) y se guarda la cadena que el usuario escribe en una variable (input_str = ). Se usa una expresi\u00f3n generadora para separar los valores y guardarlos como enteros en una lista. \u00c9sto se logra haciendo lo siguiente: se crea una variable llamada dimension que en realidad es una lista (dimension = ) y dentro de los corchetes se convierte a lista la cadena que el usuario introdujo (input_str.split(&#8216;,&#8217;)). Como ahora es una lista, se puede recorrer utilizando for (for x in input_str.split(&#8216;,&#8217;). \u00a0A la izquierda de ese for se indica el elemento que se va a generar dentro de la lista (int(x)), que es el valor de x, convertido a entero. Cada uno de los valores de la lista, se guardan en variables separadas (rowNum = dimension[0]). Y se utilizan esas variables para crear una multilista. Para que el elemento generado sea el valor de la fila, se utiliza row.<\/p>\n<p>\u00c9ste c\u00f3digo lo puedes encontrar explicado en video. Te lo dejo a continuaci\u00f3n:<\/p>\n<p><iframe loading=\"lazy\" width=\"806\" height=\"453\" src=\"https:\/\/www.youtube.com\/embed\/sDdaEEh9iGE\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En \u00e9ste art\u00edculo veremos qu\u00e9 son las multilistas en Python, c\u00f3mo se crean, y c\u00f3mo crear multilistas en Python usando expresiones generadoras.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[301,188],"tags":[287,298,290],"class_list":["post-2143","post","type-post","status-publish","format-standard","hentry","category-curso-python-analisis-datos","category-programacion-basica","tag-curso-python","tag-for-en-python","tag-listas-en-python"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=2143"}],"version-history":[{"count":9,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2143\/revisions"}],"predecessor-version":[{"id":2155,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/2143\/revisions\/2155"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=2143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=2143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=2143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}