{"id":101,"date":"2020-06-03T19:38:22","date_gmt":"2020-06-03T17:38:22","guid":{"rendered":"https:\/\/www.pythonparatodo.com\/?p=101"},"modified":"2020-06-07T19:00:24","modified_gmt":"2020-06-07T17:00:24","slug":"listas-list","status":"publish","type":"post","link":"https:\/\/www.pythonparatodo.com\/?p=101","title":{"rendered":"Listas (list)"},"content":{"rendered":"\n<p>En Python las listas son colecciones de datos rodeadas por corchetes y delimitadas por comas. A cada uno de estos datos se les llama elemento o item. Un ejemplo de lista ser\u00eda esta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animal = [ \u2018oso\u2019 , \u2018lobo\u2019 , \u2018le\u00f3n\u2019 ]<\/code><\/pre>\n\n\n\n<p>Las colecciones de datos pueden ser del tipo num\u00e9rico, cadena, valores verdadero o falso u otras listas.<\/p>\n\n\n\n<p>Ejemplo de una lista num\u00e9rica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [ 1 , 2 , 3 , 4 , 5 ]<\/code><\/pre>\n\n\n\n<p>Ejemplo de una lista de texto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> nombres = [ \u2018Jose\u2019 ,  \u2018Fernando\u2019 ,  \u2018Javier\u2019 ]<\/code><\/pre>\n\n\n\n<p>A diferencia de otros lenguajes donde las listas solo pueden ser de un tipo, en Python una lista puede contener valores de cualquier tipo, con lo que podr\u00edamos encontrar una lista como la siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> varios = [ 1 , \u2019dos\u2019 , 3 , \u2019cuatro\u2019 , [ 5 , \u2019cinco\u2019 ] , True ]<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n se puede crear una lista vac\u00eda de cualquiera de estas dos formas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> lista = list()\n>>> lista = []<\/code><\/pre>\n\n\n\n<p>Para acceder a cualquier elemento de una lista usamos su nombre y el \u00edndice colocado en la parte derecha entre corchetes, el \u00edndice es un n\u00famero entero que indica la posici\u00f3n del elemento en la lista comenzando por cero, es decir, el primer elemento en la lista animal es animal[0], el segundo es animal[1] y as\u00ed hasta animal[\u00faltimo &#8211; 1]. Al usar n\u00fameros negativos como \u00edndice se accede desde el final, es decir, animal[-1] es el \u00faltimo elemento, animal[-2] es el pen\u00faltimo, etc.<\/p>\n\n\n\n<p>Si se intenta acceder a un elemento que no est\u00e1 en la lista se producir\u00e1 una excepci\u00f3n del tipo <strong>IndexError<\/strong>.<\/p>\n\n\n\n<p>Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animal = [ \u2018oso\u2019 , \u2018lobo\u2019 , \u2018le\u00f3n\u2019 ]\n>>> print(animal[0])\noso\n>>> print(animal[-1])\nle\u00f3n\n >>> print(animal[3])\nIndexError: Indice de la lista fuera de rango<\/code><\/pre>\n\n\n\n<p>Se puede cambiar el orden de los elementos de una lista o resignarlos, por eso se dice que son mutables, en el ejemplo anterior puedes cambiar el valor de un elemento asignando otro valor al lugar de la lista a la que apunta el \u00edndice, de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animal[1] = \u2018tigre\u2019<\/code><\/pre>\n\n\n\n<p>O tambi\u00e9n se puede ordenar con la funci\u00f3n <strong>sort()<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animal.sort()\n>>> print( animal )\n[ \u2018lobo\u2019 , \u2018oso\u2019 , \u2018tigre\u2019 ]<\/code><\/pre>\n\n\n\n<p>O ordenar la lista con orden descendente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animal.sort( reverse = True )\n>>> print( animal )\n[ \u2018tigre\u2019 , \u2018oso\u2019 , \u2018lobo\u2019 ]<\/code><\/pre>\n\n\n\n<p>En cualquier caso, se puede observar que los elementos han cambiado de posici\u00f3n.<\/p>\n\n\n\n<p>Se puede usar el operador de suma (+) para concatenar listas, por ejemplo una lista con a,e,i y otra con o, u , si se suman las listas con + el resultado ser\u00e1 una tercera lista con la suma de las primeras.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> vocalesaei = [ \u2018a\u2019 , \u2018e\u2019, \u2018i\u2019 ]\n>>> vocalesou = [ \u2018o\u2019 , \u2018u\u2019 ]\n>>> vocales = vocalesaei + vocalesou\n>>> print(vocales)\n[\u2018a\u2019,\u2019e\u2019,\u2019i\u2019,\u2019o\u2019,\u2019u\u2019]<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n es posible usar el operador de multiplicaci\u00f3n para obtener un resultado que sea x veces la lista, por ejemplo para una lista con los elementos [1,2,3], &nbsp;si se multiplica la lista por 2, el resultado ser\u00e1 1,2,3,1,2,3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [ 1 , 2 , 3 ]\n>>> print( numeros * 2 )\n[1,2,3,1,2,3]<\/code><\/pre>\n\n\n\n<p>Se pueden recorrer los elementos de la lista de varias formas, lo mas com\u00fan es usar un bucle <strong>for in<\/strong> para que devuelva cada elemento de la lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> razasPerros = [ \u2018Afgano\u2019 , \u2018Akita\u2019 , \u2018Basset Hound\u2019, \u2018Malt\u00e9s\u2019 ]\n>>> for razaPerro in razasPerros:\n>>>          print(razaPerro)<\/code><\/pre>\n\n\n\n<p>Pero tambi\u00e9n se puede usar el \u00edndice para obtener el valor y si fuera necesario cambiar alguno de los elementos de la lista, en el siguiente ejemplo se usar\u00e1 la funci\u00f3n <strong>range()<\/strong> para obtener los \u00edndices para moverse por la lista. Usando <strong>range()<\/strong> se obtienen valores desde 0 hasta un valor inferior al pasado como argumento, por tanto en el siguiente ejemplo obtiene valores desde 0 hasta alcanzar el n\u00famero de elementos de la lista menos uno que es justo lo que se necesita.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> razasPerros = [ \u2018Afgano\u2019 , \u2018Akita\u2019 , \u2018Basset Hound\u2019, \u2018Malt\u00e9s\u2019 ]\n>>> for indice in range(len(razasPerros)):\n>>>          print(razasPerros[indice])\nAfgano\nAkita\nBasset Hound\nMalt\u00e9s<\/code><\/pre>\n\n\n\n<p>Y para modificar los valores de la lista se puede hacer algo as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> razasPerros = [ \u2018Afgano\u2019 , \u2018Akita\u2019 , \u2018Basset Hound\u2019, \u2018Malt\u00e9s\u2019 ]\n>>> for indice in range(len(razasPerros)):\n>>>          razasPerros[indice] = \u2018El perro raza: \u2018 + razasPerros[indice]\n>>> print(razasPerros)\n[ \u2018El perro raza: Afgano\u2019 , \u2018El perro raza: Akita\u2019 , \u2018El perro raza: Basset Hound\u2019 , \u2018El perro raza: Malt\u00e9s\u2019 ]<\/code><\/pre>\n\n\n\n<p>Se puede hacer uso de <strong>slice<\/strong> en las listas al igual que con las cadenas, aunque el conjunto de datos obtenido ser\u00e1n los elementos de la lista. Como se puede observar en el siguiente ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> razasPerros = [ \u2018Afgano\u2019 , \u2018Akita\u2019 , \u2018Basset Hound\u2019, \u2018Malt\u00e9s\u2019 ]\n>>> razasPerros[0:3]\n[ \u2018Afgano\u2019 , \u2018Akita\u2019 , \u2018Basset Hound\u2019 ]\n>>> razasPerros[2:3]\n[\u2018Basset Hound\u2019]\n>>> razasPerros[:1]\n[ \u2018Afgano\u2019 ]<\/code><\/pre>\n\n\n\n<p>Para averiguar si un valor es un elemento de la lista se puede hacer uso de los operadores <strong>in<\/strong> o <strong>not in<\/strong> como se muestra en el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> animales = ['lobo','oso','tigre']\n>>> 'lobo' in animales\nTrue\n>>> 'perro' in animales\nFalse\n>>> 'perro' not in animales\nTrue<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a>M\u00e9todos de list()<\/a><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">append<\/h4>\n\n\n\n<p>Sirve para a\u00f1adir un elemento al final de la lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> numeros.append(4)\n>>> numeros\n[1, 2, 3, 4]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">pop<\/h4>\n\n\n\n<p>Usado para eliminar el valor indicado entre corchetes o si no se indica nada el \u00faltimo valor de la lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> numeros.pop()\n3\n>>> numeros\n[1, 2]\n>>> numeros.pop(0)\n1\n>>> numeros\n[2]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Extend<\/h4>\n\n\n\n<p>Extiende la lista con los valores del objeto que se le pase c\u00f3mo par\u00e1metro.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> letras = ['a','b','c']\n>>> todo = list()\n>>> todo.extend(numeros)\n>>> todo\n[1, 2, 3]\n>>> todo.extend(letras)\n>>> todo\n[1, 2, 3, 'a', 'b', 'c']<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Insert<\/h4>\n\n\n\n<p>Requiere dos par\u00e1metros el primero indica el \u00edndice o posici\u00f3n y el segundo el objeto a insertar.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> numeros.insert(1,'a')\n>>> numeros\n[1, 'a', 2, 3]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Remove<\/h4>\n\n\n\n<p>Requiere un par\u00e1metro con el elemento a eliminar, busca en la lista eliminando la primera repetici\u00f3n del elemento.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> letras = ['a','a','b','c']\n>>> letras.remove('a')\n>>> letras\n['a', 'b', 'c']<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Clear<\/h4>\n\n\n\n<p>Borra todos los elementos de la lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> numeros.clear()\n>>> numeros\n[]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Del<\/h4>\n\n\n\n<p>Borra una rebanada (slice) de elementos de la lista en la forma del lista[inicio:fin], hay que recordar que borra hasta fin &#8211; 1. Si se usa sin el slice borra la variable, para borrar solo el contenido se usa del[:], si se quiere borrar el primer elemento se usa del[0], para borrar el \u00faltimo se usa del[-1].<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> del numeros[1:2]\n>>> numeros\n[1, 3]\n>>> numeros = [1,2,3]\n>>> del numeros[1:3]\n>>> numeros\n[1]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Index<\/h4>\n\n\n\n<p>Devuelve el \u00edndice de la primera ocurrencia en la lista del valor que se pase como primer par\u00e1metro, el segundo par\u00e1metro opcional es el \u00edndice d\u00f3nde comenzar y el tercer la \u00faltima posici\u00f3n de \u00edndice hasta el que llegar.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> numeros.index(1)\n0\n>>> numeros.index(2)\n1\n>>> numeros.index(2,0,2)\n1\n>>> numeros.index(2,0,1)\nTraceback (most recent call last):\nFile \"&lt;stdin>\", line 1, in &lt;module>\nValueError: 2 is not in list<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Count<\/h4>\n\n\n\n<p>Devuelve el total de ocurrencias del valor que se pase como par\u00e1metro.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> letras = ['a','a','b','c']\n>>> letras.count('a')\n2<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Sort<\/h4>\n\n\n\n<p>Ordena la lista por defecto, la ordena en orden ascendente salvo que se indique el par\u00e1metro reverse=True en cuyo caso lo har\u00e1 de forma descendente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [5,2,4,3,1]\n>>> numeros.sort()\n>>> numeros\n[1, 2, 3, 4, 5]\n>>> numeros.sort(reverse=True)\n>>> numeros\n[5, 4, 3, 2, 1]<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Reverse<\/h4>\n\n\n\n<p>Devuelve la lista en orden inverso.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> lista = [ 'a','b','c']\n>>> lista.reverse()\n>>> lista\n['c', 'b', 'a']<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Copy<\/h4>\n\n\n\n<p>Obtiene una copia superficial de la lista. Es \u00fatil porque si se pretende clonar una lista y se hace en la forma <em>lista1=lista2<\/em> lo que se obtiene es que lista1 es una referencia a lista2 y que lista2 sufre una modificaci\u00f3n, lista1 tambi\u00e9n quedar\u00e1 afectada puesto que es una copia de la referencia a la lista y no una copia de los datos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> numeros = [1,2,3]\n>>> otros = numeros\n>>> numeros.append(4)\n>>> otros\n[1, 2, 3, 4]\n>>> #Con copy()\n... numeros = [1,2,3]\n>>> otros = numeros.copy()\n>>> numeros.append(4)\n>>> otros\n[1, 2, 3]<\/code><\/pre>\n\n\n\n<p>Es posible usar la funci\u00f3n <strong>enumerate()<\/strong> para obtener a la vez la posici\u00f3n y el valor de los elementos de una lista.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> letras = [ 'a' , 'b' , 'c' , 'd' , 'e']\n>>> enumerate(letras)\n>>> for pos , valor in enumerate(letras):\n...     print( pos , valor )\n...\n0 a\n1 b\n2 c\n3 d\n4 e<\/code><\/pre>\n\n\n\n<p>Se pueden usar las listas como pilas de datos donde meter un elemento en la \u00faltima posici\u00f3n con <strong>append<\/strong> y sacarlo con <strong>pop<\/strong> como en el siguiente c\u00f3digo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">>>> pila = list()\n>>> pila.append(1)\n>>> pila.append(2)\n>>> pila\n[1, 2]\n>>> pila.pop()\n2\n>>> pila.pop()\n1\n>>> pila\n[]<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En Python las listas son colecciones de datos rodeadas por corchetes y delimitadas por comas. A cada uno de estos &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,4],"tags":[49,50,2,6],"class_list":["post-101","post","type-post","status-publish","format-standard","hentry","category-colecciones-de-datos","category-python","tag-colecciones-de-datos","tag-listas","tag-python","tag-python3"],"_links":{"self":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=101"}],"version-history":[{"count":3,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions\/117"}],"wp:attachment":[{"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonparatodo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}