Ir al contenido principal

18 preguntas frecuentes sobre listas en Python

Descubre cómo crear una lista en Python, seleccionar elementos, la diferencia entre append() y extend(), por qué usar NumPy y mucho más.
Actualizado 17 sept 2026  · 15 min leer

Explorar con IA

ChatGPTClaudePerplexity

El artículo ofrecerá soluciones sencillas, explicaciones claras y directas, y algunos trucos que podrás practicar al momento con ejercicios interactivos.

Si prefieres aprender sobre listas con un curso, échale un vistazo a nuestro curso Intro to Python for Data Science, que incluye un capítulo sobre listas en Python.

Contexto

Las listas son un tema cada vez más popular tanto para quienes empiezan con Python como para quienes ya tienen experiencia con el lenguaje. Si nos fiamos de los resultados de Google Trends, el interés de búsqueda por este tema ha subido año tras año.

Si sueles visitar foros para responder o preguntar sobre programación en Python, como Stack Overflow, Quora o Reddit, seguramente ya intuyes por qué.

Muchas preguntas sobre Python acaban en estos foros y se quedan allí: los usuarios las marcan como «duplicadas» o «fijas», las votan o debaten la mejor solución con otros.

Con este artículo, DataCamp quiere ayudarte a abordar un tema: las preguntas más frecuentes sobre listas en Python, y hacerlo de forma interactiva.

¿Qué es exactamente una lista en Python?

Las listas son una de las cuatro estructuras de datos integradas en Python, junto con las tuplas, los diccionarios y los conjuntos (sets). Sirven para almacenar una colección ordenada de elementos, que pueden ser de distintos tipos (aunque normalmente no lo son). Los elementos se separan por comas y la lista va entre corchetes. Por ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhlc2UgbGlzdCBlbGVtZW50cyBhcmUgYWxsIG9mIHRoZSBzYW1lIHR5cGVcbnpvbyA9IFsnYmVhcicsICdsaW9uJywgJ3BhbmRhJywgJ3plYnJhJ11cbnByaW50KHpvbylcblxuIyBCdXQgdGhlc2UgbGlzdCBlbGVtZW50cyBhcmUgbm90XG5iaWdnZXJab28gPSBbJ2JlYXInLCAnbGlvbicsICdwYW5kYScsICd6ZWJyYScsIFsnY2hpbXBhbnplZXMnLCAnZ29yaWxsYXMnLCAnb3Jhbmd1dGFucycsICdnaWJib25zJ11dXG5wcmludChiaWdnZXJab28pIn0=

Observa que la segunda variable, biggerZoo, es una lista similar a zoo, pero además contiene otra lista con distintos tipos de monos.

Como las listas en Python almacenan colecciones ordenadas de elementos u objetos, decimos que son tipos secuencia, porque se comportan como tal. Otros tipos que también son secuencia son las cadenas (strings) y las tuplas.

¿Qué tienen de especial los tipos secuencia? En pocas palabras: se pueden recorrer. Por eso listas, cadenas, tuplas y conjuntos se llaman «iterables».

Ten presente que este concepto es importante y aparecerá en otros lenguajes usados en ciencia de datos, como Scala.

Ahora sí, manos a la obra. Vamos a profundizar en las preguntas sobre listas que probablemente te has hecho o te harán dudar como programador de Python. Esta es la lista de preguntas que responderemos en este tutorial:

1. Cuándo usar listas en Python y cuándo usar tuplas, diccionarios o sets

La introducción parece clara cuando la lees, pero cuando pasas a un script pequeño en Python o a un proyecto completo, puede no ser tan obvio si conviene una lista u otro tipo de secuencia.

Aun así, elegir la estructura de datos adecuada para tus datos es esencial.

Sigue leyendo para saber más.

Listas versus tuplas

Las tuplas se usan para recopilar una lista ordenada de elementos inmutable. Esto significa que:

  • No puedes añadir elementos a una tupla. No existe append() ni extend() para tuplas,
  • No puedes eliminar elementos de una tupla. No tienen remove() ni pop(),
  • Puedes buscar elementos en una tupla porque eso no la modifica.
  • También puedes usar el operador in para comprobar si un elemento existe en la tupla.

Así que, si defines un conjunto constante de valores y solo vas a iterar sobre ellos, usa una tupla en lugar de una lista. Será más rápida que una lista y más segura, ya que las tuplas son datos con «protección contra escritura».

Listas versus diccionarios

  • Una lista almacena una colección ordenada de elementos, por lo que mantiene cierto orden. Los diccionarios no tienen orden.
  • Los diccionarios asocian cada clave a un valor, mientras que las listas solo contienen valores.

Usa un diccionario cuando tengas un conjunto desordenado de claves únicas que mapean a valores.

Nota: como hay claves y valores enlazados, el rendimiento será mejor que con listas cuando verifiques si un elemento pertenece a la colección.

Listas versus sets

  • Al igual que los diccionarios, los sets no tienen orden en su colección de elementos. Las listas sí.
  • Un set exige que sus elementos sean hashables; las listas pueden almacenar elementos no hashables.
  • Los sets requieren que los elementos sean únicos e inmutables. No permiten duplicados, mientras que las listas sí y además son mutables.

Usa sets cuando tengas un conjunto desordenado de valores únicos, inmutables y hashables.

¿No tienes claro qué valores son hashables?

Mira esta referencia rápida:

Hashable No hashable
Floats Diccionarios
Enteros Sets
Tuplas Listas
Cadenas  
frozenset()  

Truco: no te quedes con nuestra palabra. Pruébalo tú mismo abajo y experimenta en la consola de IPython :)

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbl9fX18gX19fX1xuXG4jIENoZWNrIGlmIGEgZGljdGlvbmFyeSBpcyBoYXNoYWJsZVxucHJpbnQoaXNpbnN0YW5jZSh7fSwgY29sbGVjdGlvbnMuSGFzaGFibGUpKVxuXG4jIENoZWNrIGlmIGEgZmxvYXQgaXMgaGFzaGFibGVcbnByaW50KGlzaW5zdGFuY2UoMC4xMjUsIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbmltcG9ydCBjb2xsZWN0aW9uc1xuXG4jIENoZWNrIGlmIGEgZGljdGlvbmFyeSBpcyBoYXNoYWJsZVxucHJpbnQoaXNpbnN0YW5jZSh7fSwgY29sbGVjdGlvbnMuSGFzaGFibGUpKVxuXG4jIENoZWNrIGlmIGEgZmxvYXQgaXMgaGFzaGFibGVcbnByaW50KGlzaW5zdGFuY2UoMC4xMjUsIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJEaWQgeW91IGFkZCBzb21lIGNvZGUgdG8gaW1wb3J0IGBjb2xsZWN0aW9uc2AgYW5kIHRvIHRlc3QgaWYgYSBmbG9hdCBpcyBoYXNoYWJsZT9cIlxuaW1wb3J0X21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIGltcG9ydCB0aGUgJ2NvbGxlY3Rpb25zJyBsaWJyYXJ5IVwiXG4jIFRlc3QgaW1wb3J0IGBjb2xsZWN0aW9uc2BcbnRlc3RfaW1wb3J0KFwiY29sbGVjdGlvbnNcIiwgc2FtZV9hcyA9IFRydWUsIG5vdF9pbXBvcnRlZF9tc2cgPSBpbXBvcnRfbXNnLCBpbmNvcnJlY3RfYXNfbXNnID0gcHJlZGVmX21zZylcbiMgVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByZWRlZl9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJBd2Vzb21lIGpvYiFcIikifQ==

Nota: como trabajas con elementos hashables, comprobar pertenencia (si cierto elemento forma parte de tu secuencia) será más rápido con sets que con listas.

2. Cómo seleccionar un elemento de una lista

Si quieres trabajar bien con listas, necesitas saber cómo acceder a ellas.

Normalmente accedes a listas para cambiar valores, actualizarlos o eliminarlos, o para realizar alguna operación. Para acceder a listas (y, por extensión, a todos los tipos secuencia) usas el operador de índice [ ]. Dentro, pones un entero.

Mira este ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgU2VsZWN0IHRoZSBmaXJzdCBsaXN0IGVsZW1lbnRcbm9uZVpvb0FuaW1hbCA9IGJpZ2dlclpvb1swXVxuXG4jIFByaW50IGBvbmVab29BbmltYWxgXG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBTZWxlY3QgdGhlIGZpcnN0IGxpc3QgZWxlbWVudFxub25lWm9vQW5pbWFsID0gYmlnZ2VyWm9vWzBdXG5cbiMgUHJpbnQgYG9uZVpvb0FuaW1hbGBcbnByaW50KG9uZVpvb0FuaW1hbCkiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJEaWQgeW91IHByaW50IGBvbmVab29BbmltYWw/YFwiXG4jIFRlc3Qgb25lWm9vQW5pbWFsXG50ZXN0X29iamVjdChcIm9uZVpvb0FuaW1hbFwiLCB1bmRlZmluZWRfbXNnID0gcHJlZGVmX21zZywgaW5jb3JyZWN0X21zZyA9IHByZWRlZl9tc2cpXG4jVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByZWRlZl9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKSJ9

Ejecuta el código y mira qué devuelve. Verás que se devuelve el primer elemento de biggerZoo. Puede despistar al principio, pero los índices empiezan en 0, no en 1.

Cómo obtener el último elemento de una lista

La respuesta amplía lo anterior.

Prueba a poner un valor negativo, como -1 o -2, en el operador de índice para recuperar el último elemento de biggerZoo.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgUGFzcyAtMSB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYGJpZ2dlclpvb2Bcbm1vbmtleXMgPSBfX19cbnByaW50KG1vbmtleXMpXG5cbiMgUGFzcyAtMiB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYGJpZ2dlclpvb2BcbnplYnJhID0gX19fXG5wcmludCh6ZWJyYSkiLCJzb2x1dGlvbiI6IiMgUGFzcyAtMSB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYmlnZ2VyWm9vXG5tb25rZXlzID0gYmlnZ2VyWm9vWy0xXVxucHJpbnQobW9ua2V5cylcblxuIyBQYXNzIC0yIHRvIHRoZSBpbmRleCBvcGVyYXRvciBvbiBiaWdnZXJab29cbnplYnJhID0gYmlnZ2VyWm9vWy0yXVxucHJpbnQgemVicmEpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiTG9vayBhdCB0aGUgcHJldmlvdXMgZXhhbXBsZSB0byBzZWUgaG93IHlvdSBjYW4gY29uc3RydWN0IHRoZSBpbmRleCBvcGVyYXRvciBvbiBgYmlnZ2VyWm9vXCJcbnplYnJhX3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCBgemVicmFgP1wiXG4jIFRlc3Qgb2JqZWN0c1xudGVzdF9vYmplY3QoXCJtb25rZXlzXCIsIHVuZGVmaW5lZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfbXNnID0gcHJlZGVmX21zZylcbnRlc3Rfb2JqZWN0KFwiemVicmFcIiwgdW5kZWZpbmVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9tc2cgPSBwcmVkZWZfbXNnKVxuI1Rlc3QgcHJpbnRcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz16ZWJyYV9wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJLZWVwIHVwIHRoZSBnb29kIHdvcmshXCIpIn0=

No tiene misterio, ¿verdad?

¿Qué significa el error Index out of range?

Es un error muy habitual, sobre todo si estás empezando a programar o eres nuevo en Python.

La mejor forma de entenderlo es probarlo tú.

Usa el widget interactivo de arriba e intenta pasar números negativos muy pequeños o positivos muy grandes.

Como verás, obtendrás un error «Index Out Of Range» cuando pasas un entero al operador de índice que es mayor (o mucho menor) que la longitud de tu lista. Significa que haces referencia a un índice que no existe (todavía).

Este fragmento provoca el error. Ejecútalo y compruébalo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgUnVuIHRoaXMgY29kZSB0byB0cmlnZ2VyIGFuIFwiSW5kZXggT3V0IE9mIFJhbmdlXCIgRXJyb3JcbmJpZ2dlclpvb1s2XSJ9

La notación de corte (slice) en listas

Si eres nuevo en programación o en Python, esto puede ser especialmente confuso.

En general, usas la notación de corte cuando quieres seleccionar más de un elemento a la vez. Igual que cuando eliges un solo elemento, usas los corchetes. Lo especial ahora es que, en lugar de un entero, añades un : entre los corchetes, así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgVXNlIHRoZSBzbGljZSBub3RhdGlvbiBsaXN0IHRoaXNcbnNvbWVab29BbmltYWxzID0gYmlnZ2VyWm9vWzI6IF1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UgZXhhY3RseSBzZWxlY3QgZnJvbSBgYmlnZ2VyWm9vYFxucHJpbnQoc29tZVpvb0FuaW1hbHMpXG5cbiMgVHJ5IHB1dHRpbmcgMiBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29sb25cbm90aGVyWm9vQW5pbWFscyA9IGJpZ2dlclpvb1tfX19fXVxuXG4jIFByaW50IHRvIHNlZSB3aGF0IHlvdSdyZSBnZXR0aW5nIGJhY2tcbnByaW50KG90aGVyWm9vQW5pbWFscykiLCJzb2x1dGlvbiI6IiMgVXNlIHRoZSBzbGljZSBub3RhdGlvbiBsaXN0IHRoaXNcbnNvbWVab29BbmltYWxzID0gYmlnZ2VyWm9vWzI6IF1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UgZXhhY3RseSBzZWxlY3QgZnJvbSBgYmlnZ2VyWm9vYFxucHJpbnQoc29tZVpvb0FuaW1hbHMpXG5cbiMgVHJ5IHB1dHRpbmcgMiBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29sb25cbm90aGVyWm9vQW5pbWFscyA9IGJpZ2dlclpvb1s6Ml1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UncmUgZ2V0dGluZyBiYWNrXG5wcmludChvdGhlclpvb0FuaW1hbHMpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBwdXQgcGFzcyBgOjJgIHRvIHRoZSBpbmRleCBvcGVyYXRvcj9cIlxuem9vQW5pbWFsc19wcmludF9tc2cgPSBcIkRpZCB5b3UgcHJpbnQgYG90aGVyWm9vQW5pbWFsc2A/XCJcbiMgVGVzdCBsaXN0IGBsaXN0XG50ZXN0X29iamVjdChcIm90aGVyWm9vQW5pbWFsc1wiLCB1bmRlZmluZWRfbXNnPXByZWRlZl9tc2csIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZylcbiMgVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXpvb0FuaW1hbHNfcHJpbnRfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiWW91IHJvY2shXCIpIn0=

Ahora obtenemos la lista biggerZoo, pero desde la entrada panda (índice 2) en adelante. Es decir, empezamos en el índice 2 y vamos hasta el final, ya que no se indicó otro entero.

¿Qué pasa si hacemos lo contrario?

¡Compruébalo ejecutando el bloque de código!

Ahora solo obtenemos bear y lion. Empezamos en el índice 0 y vamos hasta el 2. Al contrario de lo que podrías esperar, el resultado no incluye panda.

En general, se cumple lo siguiente:

# elementos desde start hasta end (sin incluir end)
a[start:end]

# elementos desde start hasta el final
a[start:]    

# elementos desde el inicio hasta end (sin incluir end)
a[:end]

Truco: si pasas solo dos puntos :, copias la lista.

Además de la notación simple, existe el valor de paso (step), que se generaliza así:

# desde start hasta antes de end, con paso step
a[start:end:step]

¿Qué hace exactamente step?

Te permite «saltar» por la lista y seleccionar solo los elementos que coinciden con ese paso. Ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgUHJpbnQgdG8gc2VlIGhvdyB0aGUgc3RlcCB2YWx1ZSBpbmZsdWVuY2VzIHlvdXIgcmVzdWx0XG5wcmludChiaWdnZXJab29bMjo6Ml0pXG5wcmludChiaWdnZXJab29bMTo6M10pIn0=

Nota: si no especificas step, vale 1 por defecto. No se saltará ningún elemento.

Recuerda que el resultado no incluye el índice final que indiques en el slice.

Cómo seleccionar un elemento aleatorio de una lista

Puedes seleccionar un elemento aleatorio de tu lista con el paquete random:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGBjaG9pY2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gX19fXyBpbXBvcnQgX19fX1xuXG4jIENvbnN0cnVjdCB5b3VyIGBsaXN0YCB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB0aGUgZmlyc3QgNCBsZXR0ZXJzIG9mIHRoZSBhbHBoYWJldFxubGlzdCA9IFsnXycsJ18nLCdfJywnXyddXG5cbiMgUHJpbnQgeW91ciByYW5kb20gJ2xpc3QnIGVsZW1lbnRcbnByaW50KGNob2ljZShsaXN0KSkiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IGBjaG9pY2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VcblxuIyBDb25zdHJ1Y3QgeW91ciBgbGlzdGAgdmFyaWFibGUgd2l0aCBhIGxpc3Qgb2YgdGhlIGZpcnN0IDQgbGV0dGVycyBvZiB0aGUgYWxwaGFiZXRcbmxpc3QgPSBbJ2EnLCAnYicsICdjJywgJ2QnXVxuXG4jIFByaW50IHlvdXIgcmFuZG9tICdsaXN0JyBlbGVtZW50XG5wcmludChjaG9pY2UobGlzdCkpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBhZGQgc29tZSBjb2RlIHRvIGNyZWF0ZSB0aGUgYGxpc3RgIHZhcmlhYmxlP1wiXG5pbXBvcnRfbXNnID0gXCJEb24ndCBmb3JnZXQgdG8gaW1wb3J0IHRoZSAncmFuZG9tJyBsaWJyYXJ5XCJcbnJhbmRvbV9saXN0X3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCB5b3UgcmFuZG9tIGBsaXN0YCBlbGVtZW50P1wiXG4jIFRlc3QgbGlzdCBgbGlzdFxudGVzdF9vYmplY3QoXCJsaXN0XCIsIHVuZGVmaW5lZF9tc2c9cHJlZGVmX21zZywgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnKVxuIyBUZXN0IHByaW50XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cmFuZG9tX2xpc3RfcHJpbnRfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiQXdlc29tZSBqb2IhXCIpIn0=

Si también quieres seleccionar un elemento aleatorio mediante índices, usa randrange de la librería random:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGByYW5kcmFuZ2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gX19fXyBpbXBvcnQgX19fX1xuXG4jIENvbnN0cnVjdCB5b3VyIGByYW5kb21MZXR0ZXJzYCB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB0aGUgZmlyc3QgNCBsZXR0ZXJzIG9mIHRoZSBhbHBoYWJldFxucmFuZG9tTGV0dGVycyA9IFsnXycsJ18nLCAnXycsICdfJ11cblxuIyBTZWxlY3QgYSByYW5kb20gaW5kZXggZnJvbSAncmFuZG9tTGV0dGVyc2BcbnJhbmRvbUluZGV4ID0gcmFuZHJhbmdlKDAsbGVuKHJhbmRvbUxldHRlcnMpKVxuXG4jIFByaW50IHlvdXIgcmFuZG9tIGVsZW1lbnQgZnJvbSBgcmFuZG9tYFxucHJpbnQocmFuZG9tTGV0dGVyc1tyYW5kb21JbmRleF0pIiwic29sdXRpb24iOiIjIEltcG9ydCBgcmFuZHJhbmdlYCBmcm9tIHRoZSBgcmFuZG9tYCBsaWJyYXJ5XG5mcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlXG5cbiMgQ29uc3RydWN0IHlvdXIgYHJhbmRvbUxldHRlcnNgIHZhcmlhYmxlIHdpdGggYSBsaXN0IG9mIHRoZSBmaXJzdCA0IGxldHRlcnMgb2YgdGhlIGFscGhhYmV0XG5yYW5kb21MZXR0ZXJzID0gWydhJywgJ2InLCAnYycsICdkJ11cblxuIyBTZWxlY3QgYSByYW5kb20gaW5kZXggZnJvbSAncmFuZG9tTGV0dGVyc2BcbnJhbmRvbUluZGV4ID0gcmFuZHJhbmdlKDAsbGVuKHJhbmRvbUxldHRlcnMpKVxuXG4jIFByaW50IHlvdXIgcmFuZG9tIGVsZW1lbnQgZnJvbSBgcmFuZG9tYFxucHJpbnQocmFuZG9tTGV0dGVyc1tyYW5kb21JbmRleF0pIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBhZGQgc29tZSBjb2RlIHRvIGltcG9ydCBgcmFuZG9tYCBhbmQgZGlkIHlvdSBjcmVhdGUgdGhlIGBsaXN0YCB2YXJpYWJsZT9cIlxucmFuZG9tX3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCB5b3VyIHJhbmRvbSBlbGVtZW50IGZyb20gYHJhbmRvbWA/XCJcbiMgVGVzdCBsaXN0IGByYW5kb21MZXR0ZXJzYFxudGVzdF9vYmplY3QoXCJyYW5kb21MZXR0ZXJzXCIsIHVuZGVmaW5lZF9tc2c9cHJlZGVmX21zZywgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnKVxuIyBUZXN0IHByaW50XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cmFuZG9tX3ByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcIldlbGwgZG9uZSFcIikifQ==

Truco: échale un ojo a la librería random, te será muy útil cuando programes en Python.

3. Cómo transformar listas de Python en otras estructuras de datos

A veces, una lista no es lo que necesitas. En esos casos, conviene saber cómo transformarla en otra estructura más apropiada. A continuación verás transformaciones comunes y sus respuestas.

Cómo convertir una lista en cadena

Convierte una lista en cadena con ''.join(). Esta operación «pega» todas las cadenas de tu lista y devuelve una única cadena. Más info aquí.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgTGlzdCBvZiBTdHJpbmdzIHRvIGEgU3RyaW5nXG5saXN0T2ZTdHJpbmdzID0gWydPbmUnLCAnVHdvJywgJ1RocmVlJ11cbnN0ck9mU3RyaW5ncyA9ICcnLmpvaW4obGlzdE9mU3RyaW5ncylcbnByaW50KHN0ck9mU3RyaW5ncylcblxuIyBMaXN0IE9mIEludGVnZXJzIHRvIGEgU3RyaW5nXG5saXN0T2ZOdW1iZXJzID0gWzEsIDIsIDNdXG5zdHJPZk51bWJlcnMgPSAnJy5qb2luKHN0cihuKSBmb3IgbiBpbiBsaXN0T2ZOdW1iZXJzKVxucHJpbnQoc3RyT2ZOdW1iZXJzKSJ9

Nota: si tu lista solo contiene enteros, convierte antes los elementos a cadenas. Esto se ilustra en el segundo ejemplo del bloque interactivo.

La conversión de entero a cadena se hace iterando sobre la lista original listOfNumbers. Si quieres saber más sobre cómo iterar una lista, ve a la pregunta 12.

Cómo convertir una lista en tupla

Puedes convertir una lista en tupla con la función tuple(). Pasa tu lista y recibirás una tupla.

Recuerda: las tuplas son inmutables. No puedes cambiarlas después.

Truco: intenta transformar listOfStrings en una tupla en el ejercicio interactivo de la siguiente sección.

Cómo convertir tu lista a un set en Python

Un set es una colección desordenada de elementos únicos. Eso significa que, al convertir desde una lista, perderás los duplicados y también el orden original.

Cámbiala con la función set(). Simplemente pásale tu lista.

Ahora practica convirtiendo listOfStrings en tupla y en set aquí:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdE9mU3RyaW5ncyA9IFsnT25lJywgJ1R3bycsICdUaHJlZSddIiwic2FtcGxlIjoiIyBQYXNzIHlvdXIgbGlzdCB0byBgdHVwbGUoKWBcbnR1cGxlKF9fXylcblxuIyBUcmFuc2Zvcm0geW91ciBsaXN0IGludG8gYSBzZXRcbnNldChfX18pIiwic29sdXRpb24iOiIjIFBhc3MgeW91ciBsaXN0IHRvIGB0dXBsZSgpYFxudHVwbGUobGlzdE9mU3RyaW5ncylcblxuIyBUcmFuc2Zvcm0geW91ciBsaXN0IGludG8gYSBzZXRcbnNldChsaXN0T2ZTdHJpbmdzKSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgbGlzdE9mU3RyaW5nc2AgdG8gYm90aCBgdHVwbGUoKWAgYW5kIGBzZXQoKWA/XCJcbiMgVGVzdCBsZW5ndGggYGp1c3RBTGlzdGBcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJ0dXBsZVwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJzZXRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcIkdvb2Qgam9iIVwiKSJ9

Cómo convertir listas en diccionarios

Un diccionario funciona con claves y valores, así que la conversión desde lista puede no ser tan directa. Imagina que tienes esta lista:

helloWorld = ['hello','world','1','2']

Necesitas conseguir que ‘hello’ y ‘world’ y ‘1’ y ‘2’ se interpreten como pares clave-valor. Para ello, selecciónalos con slices y pásalos a zip().

zip() hace justo eso: «empareja» elementos. En este caso, al hacer zip con helloWorld[0::2] y helloWorld[1::2], la salida será:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaGVsbG9Xb3JsZCA9IFsnaGVsbG8nLCd3b3JsZCcsJzEnLCcyJ10iLCJzYW1wbGUiOiJsaXN0KHppcChoZWxsb1dvcmxkKSkifQ==

Nota: necesitas usar list() para imprimir el resultado de zip().

Después pasa esto a dict(), que interpretará hello como clave y world como valor. Igualmente, 1 será clave y 2 el valor.

Ejecuta este código para confirmarlo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaGVsbG9Xb3JsZCA9IFsnaGVsbG8nLCd3b3JsZCcsJzEnLCcyJ10iLCJzYW1wbGUiOiIjIENvbnZlcnQgdG8gYSBkaWN0aW9uYXJ5XG5oZWxsb1dvcmxkRGljdGlvbmFyeSA9IGRpY3QoemlwKGhlbGxvV29ybGRbMDo6Ml0sIGhlbGxvV29ybGRbMTo6Ml0pKVxuXG4jIFByaW50IG91dCB0aGUgcmVzdWx0XG5wcmludChoZWxsb1dvcmxkRGljdGlvbmFyeSkifQ==

Nota: el segundo elemento que pasas a zip() usa el paso para seleccionar solo world y 2. Del mismo modo, el primero selecciona hello y 1.

Si tu lista es grande, seguramente preferirás algo así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImEgPSBbMSwgMiwgMywgNCwgNV1cblxuIyBDcmVhdGUgYSBsaXN0IGl0ZXJhdG9yIG9iamVjdFxuaSA9IGl0ZXIoYSlcblxuIyBaaXAgYW5kIGNyZWF0ZSBhIGRpY3Rpb25hcnlcbnByaW50KGRpY3QoemlwKGksIGkpKSkifQ==

Nota: un objeto iterable puede darte un iterador. El iterador, que tiene un método .__next__, sabe dónde estás exactamente en la iteración: conoce el siguiente elemento.

4. Cómo saber el tamaño de tu lista en Python

Pasa tu lista a la función len() para obtener su longitud.

Pruébalo abajo. Ya hemos creado una lista justAList para que la uses.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoianVzdEFMaXN0ID0gWzEsMiwzLCA0LCA1LCA2LCA3LCA4LDksIDEwXSIsInNhbXBsZSI6IiMgUGFzcyBganVzdEFMaXN0YCB0byBgbGVuKClgXG5sZW4oX19fXykiLCJzb2x1dGlvbiI6IiMgUGFzcyBganVzdEFMaXN0YCB0byBgbGVuKClgXG5sZW4oanVzdEFMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBganVzdEFMaXN0YCB0byB0aGUgYGxlbigpYCBmdW5jdGlvbj9cIlxuIyBUZXN0IGxlbmd0aCBganVzdEFMaXN0YFxudGVzdF9mdW5jdGlvbihcbiAgICBcImxlblwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiVGhhdCB3YXMgZWFzeSFcIikifQ==

Nota: len() no es solo para listas; también funciona con otras secuencias o colecciones como diccionarios, sets, cadenas, etc. Puedes ver más funciones integradas aquí.

5. ¿Cuál es la diferencia entre los métodos de Python append() y extend()?

Empecemos recordando el concepto de iterable que explicamos al principio:

Recuerda que decimos que un valor es iterable cuando el programa puede iterar sobre él. Es decir, un iterable representa una secuencia de uno o más valores. Como viste, las listas son secuencias y, por tanto, iterables.

Truco: puedes comprobar si una variable es iterable si tiene el método .__iter__, como en este código:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbmxpc3QgPSBbNSwgNiwgNywgOCwgOV1cblxuIyBDaGVjayB3aGV0aGVyIGl0J3MgaXRlcmFibGVcbmxpc3QuX19pdGVyX18ifQ==

Ejecuta el código de arriba y prueba con otros ejemplos sencillos en la consola.

Con esto claro, veamos la diferencia. extend() toma un iterable (lista, set, tupla o cadena) y añade cada elemento del iterable a la lista, uno a uno.

append(), en cambio, añade su argumento al final de la lista como un único elemento. Es decir, si append() recibe un iterable, lo tratará como un solo objeto.

Estudia los siguientes bloques y juega con el código para interiorizar las diferencias entre ambos métodos:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoic2hvcnRMaXN0ID0gWzEsIDIsIDNdXG5sb25nZXJMaXN0ID0gWzEsIDIsIDMsIDQsIDUsIDZdIiwic2FtcGxlIjoiIyBBcHBlbmQgWzQsNV0gdG8gYHNob3J0TGlzdGBcbnNob3J0TGlzdC5hcHBlbmQoWzQsIDVdKVxuXG4jIFVzZSB0aGUgcHJpbnQoKSBtZXRob2QgdG8gc2hvdyBzaG9ydExpc3RcbnByaW50KF9fX18pXG5cbiMgRXh0ZW5kIGBsb25nZXJMaXN0YCB3aXRoIFs0LDVdXG5sb25nZXJMaXN0LmV4dGVuZChbNCwgNV0pXG5cbiMgVXNlIHRoZSBwcmludCgpIG1ldGhvZCB0byBzZWUgbG9uZ2VyTGlzdFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgQXBwZW5kIFs0LDVdIHRvIGBzaG9ydExpc3RgXG5zaG9ydExpc3QuYXBwZW5kKFs0LCA1XSlcblxuIyBVc2UgdGhlIGBwcmludCgpYCBtZXRob2QgdG8gc2hvdyBgc2hvcnRMaXN0YFxucHJpbnQoc2hvcnRMaXN0KVxuXG4jIEV4dGVuZCBgbG9uZ2VyTGlzdGAgd2l0aCBbNCw1XVxubG9uZ2VyTGlzdC5leHRlbmQoWzQsIDVdKVxuXG4jIFVzZSB0aGUgYHByaW50KClgIG1ldGhvZCB0byBzZWUgYGxvbmdlckxpc3RgXG5wcmludChsb25nZXJMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgc2hvcnRMaXN0YCBhbmQgYGxvbmdlckxpc3RgIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbmxpc3RfcHJpbnRfbXNnID0gXCJEaWQgeW91IHB1dCBgc2hvcnRMaXN0YCBpbiBgcHJpbnQoKWA/XCJcbiMgVGVzdCBwcmludCBzaG9ydExpc3RcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1saXN0X3ByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG4jIFRlc3Q6IFByaW50IGxvbmdlckxpc3QgY29udGVudHNcbmxpc3RfcHJpbnRfbXNnMiA9IFwiRGlkIHlvdSBwdXQgYGxvbmdlckxpc3RgIGluIGBwcmludCgpYD9cIlxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPWxpc3RfcHJpbnRfbXNnMixcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcImBhcHBlbmQoKWAgYW5kIGBleHRlbmQoKWAgaG9sZCBubyBzZWNyZXRzIGZvciB5b3UhXCIpIn0=

Como ves, extend() es una versión más eficiente que llamar a append() varias veces.

6. Cómo concatenar listas en Python

Para concatenar listas, usa el operador +. Te devuelve una lista nueva con la concatenación de las dos, sin modificar las originales.

Nota: concatenar y «apendizar» puede confundir. append() es distinto del operador +, que a su vez se parece mucho a extend(), pero no es exactamente lo mismo… Con append() y extend() modificas la lista original; con + creas otra lista.

Pruébalo y compáralo con los ejemplos del bloque anterior:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoic2hvcnRMaXN0ID0gWzEsIDIsIDNdIiwic2FtcGxlIjoiIyBDb25jYXRlbmF0ZSBgc2hvcnRMaXN0YCB3aXRoIGBbNCw1XWBcbnBsdXNMaXN0ID0gc2hvcnRMaXN0ICsgWzQsNV1cblxuI1VzZSB0aGUgYHByaW50KClgIG1ldGhvZCB0byBzZWUgYHBsdXNMaXN0YFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgQ29uY2F0ZW5hdGUgYHNob3J0TGlzdGAgd2l0aCBgWzQsNV1gXG5wbHVzTGlzdCA9IHNob3J0TGlzdCArIFs0LDVdXG5cbiNVc2UgdGhlIGBwcmludCgpYCBtZXRob2QgdG8gc2VlIGBwbHVzTGlzdGBcbnByaW50KHBsdXNMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgcGx1c0xpc3RgIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbnBsdXNfcHJpbnRfbXNnID0gXCJEaWQgeW91IHB1dCBgcGx1c0xpc3RgIGluIGBwcmludCgpYD9cIlxuIyBUZXN0IHByaW50IHBsdXNMaXN0XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cGx1c19wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJFYXN5IHBlYXN5IVwiKSJ9

7. Cómo ordenar una lista en Python

Hay dos formas sencillas de ordenar los valores (ascendente o descendente):

  • Usar el método sort()
  • O usar la función sorted() pasándole una lista

sorted() se puede aplicar a cualquier iterable, así que también acepta cadenas, sets y diccionarios cuando se le pasan.

Truco: pruébalo. Ya hemos creado dos listas, rooms y orders, para que las ordenes con ambas técnicas :)

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoicm9vbXMgPSBbMzk3LCA4NywgMjk4LCA1MDMsIDQwMl1cbm9yZGVycyA9IFs3NiwgMywgNCwgNV0iLCJzYW1wbGUiOiIjIFVzZSBzb3J0KCkgb24gdGhlIHJvb21zIGxpc3Rcbl9fX18uc29ydCgpXG5cbiMgUHJpbnQgb3V0IHJvb21zIHRvIHNlZSB0aGUgcmVzdWx0XG5wcmludChfX19fKVxuXG4jIE5vdyB1c2UgdGhlIHNvcnRlZCgpIGZ1bmN0aW9uIG9uIG9yZGVyc1xuc29ydGVkKF9fX18pXG5cbiMgUHJpbnQgb3V0IG9yZGVyc1xucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgVXNlIGBzb3J0KClgIG9uIHRoZSBgcm9vbXNgIGxpc3RcbnJvb21zLnNvcnQoKVxuXG4jIFByaW50IG91dCBgcm9vbXNgIHRvIHNlZSB0aGUgcmVzdWx0XG5wcmludChyb29tcylcblxuIyBOb3cgdXNlIHRoZSBgc29ydGVkKClgIGZ1bmN0aW9uIG9uIHRoZSBgb3JkZXJzYCBsaXN0XG5zb3J0ZWQob3JkZXJzKVxuXG4jIFByaW50IG91dCBvcmRlcnNcbnByaW50KG9yZGVycykiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJQdXQgaW4gYHJvb21zLnNvcnQoKWAsIHByaW50IGByb29tc2AgYW5kIHRoZW4gdXNlIGBzb3J0ZWQob3JkZXJzKWAgdG8gc29ydCB0aGUgb3JkZXJzIGFnYWluLlwiXG4jIFRlc3Qgc29ydCByb29tcyB3aXRoIHNvcnQoKVxudGVzdF9mdW5jdGlvbihcInJvb21zLnNvcnRcIiwgbm90X2NhbGxlZF9tc2c9XCJNYWtlIHN1cmUgdG8gc29ydCB0aGUgYHJvb21zYCBsaXN0LlwiKVxuIyBUZXN0OiBQcmludCBmaWxlIGNvbnRlbnRzXG5wcmludF9yb29tc19tc2cgPSBcIkRpZCB5b3UgcHV0IGByb29tc2AgaW4gYHByaW50KClgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJpbnRfcm9vbXNfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnRlc3RfZnVuY3Rpb24oXCJzb3J0ZWRcIiwgbm90X2NhbGxlZF9tc2c9XCJNYWtlIHN1cmUgdG8gcGFzcyB0aGUgYG9yZGVyc2AgbGlzdCB0byBgc29ydGVkKClgLlwiKVxuc3VjY2Vzc19tc2coXCJHcmVhdCBqb2IhXCIpIn0=

Nota: tu lista original cambia tras ordenarla. Úsalo cuando ya no necesites la lista original.

8. Cómo clonar o copiar una lista en Python

Hay varias formas de clonar o copiar una lista:

  • Hacer un slice de la lista original y guardarlo en una variable nueva: newList = oldList[:]
  • Usar la función integrada list(): newList = list(oldList)
  • Usar la librería copy:
    • Con el método copy(): newList = copy.copy(oldList)
    • Si tu lista contiene objetos y también quieres copiarlos, usa copy.deepcopy(): copy.deepcopy(oldList)

Inténtalo abajo. Ya hemos creado una lista groceries para que la copies y la compartas con tus amigos.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoib2JqZWN0TGlzdCA9IFsnYScsJ2InLFsnYWInLCdiYSddXVxuXG4jIENvcHkgdGhlIGBvYmplY3RMaXN0YFxuY29waWVkTGlzdCA9IG9iamVjdExpc3RbOl1cblxuIyBDaGFuZ2UgdGhlIGZpcnN0IGxpc3QgZWxlbWVudCBvZiBgY29waWVkTGlzdGBcbmNvcGllZExpc3RbMF0gPSAnYydcblxuIyBHbyB0byB0aGUgdGhpcmQgZWxlbWVudCAodGhlIG5lc3RlZCBsaXN0KSBhbmQgY2hhbmdlIHRoZSBzZWNvbmQgZWxlbWVudFxuY29waWVkTGlzdFsyXVsxXSA9ICdkJ1xuXG4jIFByaW50IG91dCB0aGUgb3JpZ2luYWwgbGlzdCB0byBzZWUgd2hhdCBoYXBwZW5lZCB0byBpdFxucHJpbnQob2JqZWN0TGlzdCkiLCJzYW1wbGUiOiIjIENvcHkgdGhlIGdyb2NlcnkgbGlzdCBieSBzbGljaW5nIGFuZCBzdG9yZSBpdCBpbiB0aGUgYG5ld0dyb2Nlcmllc2AgdmFyaWFibGVcbm5ld0dyb2NlcmllcyA9IGdyb2Nlcmllc1s6XVxuXG4jIENvcHkgdGhlIGdyb2NlcnkgbGlzdCB3aXRoIHRoZSBgbGlzdCgpYCBmdW5jdGlvbiBhbmQgc3RvcmUgaXQgaW4gYSBgZ3JvY2VyaWVzRm9yRnJpZW5kc2AgdmFyaWFibGVcbmdyb2Nlcmllc0ZvckZyaWVuZHMgPSBsaXN0KF9fX18pXG5cbiMgSW1wb3J0IHRoZSBjb3B5IGxpYnJhcnkgYXMgY1xuaW1wb3J0IF9fX18gYXMgX19cblxuIyBDcmVhdGUgYSBgZ3JvY2VyaWVzRm9yRmFtaWx5YCB2YXJpYWJsZSBhbmQgYXNzaWduIHRoZSBjb3BpZWQgZ3JvY2VyeSBsaXN0IHRvIGl0XG5ncm9jZXJpZXNGb3JGYW1pbHkgPSAgYy5jb3B5KF9fX18pXG5cbiMgVXNlIGBkZWVwY29weSgpYCBhbmQgYXNzaWduIHRoZSBjb3BpZWQgbGlzdCB0byBhIGBncm9jZXJpZXNGb3JLaWRzYCB2YXJpYWJsZVxuZ3JvY2VyaWVzRm9yS2lkcz0gYy5kZWVwY29weShfX19fKSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRvbid0IGZvcmdldCB0byBhZGQgc29tZSBjb2RlIHRvIHRoZSBleGVyY2lzZSFcIlxuIyBUZXN0IGNvcHkgb2YgZ3JvY2VyeSBsaXN0IHdpdGggc2xpY2luZ1xudGVzdF9vYmplY3QoXCJuZXdHcm9jZXJpZXNcIiwgdW5kZWZpbmVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9tc2cgPSBwcmVkZWZfbXNnKVxuXG4jIFRlc3QgY29weSBvZiBncm9jZXJ5IGxpc3Qgd2l0aCBgbGlzdCgpYFxudGVzdF9vYmplY3QoXCJncm9jZXJpZXNGb3JGcmllbmRzXCIsIHVuZGVmaW5lZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfbXNnID0gcHJlZGVmX21zZylcbnRlc3RfZnVuY3Rpb24oXCJsaXN0XCIsIG5vdF9jYWxsZWRfbXNnPVwiTWFrZSBzdXJlIHRvIHBhc3MgdGhlIGdyb2NlcmllcyBsaXN0IHRvIGBsaXN0KClgLlwiKVxuXG4jIEltcG9ydCBjb3B5IGxpYnJhcnlcbnRlc3RfaW1wb3J0KFwiY29weVwiLCBzYW1lX2FzID0gVHJ1ZSwgbm90X2ltcG9ydGVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9hc19tc2cgPSBwcmVkZWZfbXNnKVxuXG4jIFRlc3QgY29weS5jb3B5KClcbnRlc3Rfb2JqZWN0KFwiZ3JvY2VyaWVzRm9yRmFtaWx5XCIsIHVuZGVmaW5lZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfbXNnID0gcHJlZGVmX21zZylcbmNvcHlfY29weV9tc2cgPSBcIkRpZCB5b3UgcGFzcyB0aGUgZ3JvY2VyeSBsaXN0IHRvIGBjb3B5LmNvcHkoKWAgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwiY29weS5jb3B5XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPWNvcHlfY29weV9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuXG4jIFRlc3QgY29weS5kZWVwY29weSgpXG50ZXN0X29iamVjdChcImdyb2Nlcmllc0ZvcktpZHNcIiwgdW5kZWZpbmVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9tc2cgPSBwcmVkZWZfbXNnKVxuY29weV9kZWVwY29weV9tc2cgPSBcIkRpZCB5b3UgcGFzcyB0aGUgZ3JvY2VyeSBsaXN0IHRvIGBjb3B5LmRlZXBjb3B5KClgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwiY29weS5kZWVwY29weVwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1jb3B5X2RlZXBjb3B5X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5cbnN1Y2Nlc3NfbXNnKFwiVGhhdCB3YXMgYSBsb3Qgb2Ygd29yayEgQXdlc29tZSA6KVwiKSJ9

Nota: con los métodos de copia «simples», las listas originales pueden verse afectadas. Con deepcopy() lo evitas. Ejecuta este código y observa qué ocurre:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm9iamVjdExpc3QgPSBbJ2EnLCdiJyxbJ2FiJywnYmEnXV1cblxuIyBDb3B5IHRoZSBgb2JqZWN0TGlzdGBcbmNvcGllZExpc3QgPSBvYmplY3RMaXN0WzpdXG5cbiMgQ2hhbmdlIHRoZSBmaXJzdCBsaXN0IGVsZW1lbnQgb2YgYGNvcGllZExpc3RgXG5jb3BpZWRMaXN0WzBdID0gJ2MnXG5cbiMgR28gdG8gdGhlIHRoaXJkIGVsZW1lbnQgKHRoZSBuZXN0ZWQgbGlzdCkgYW5kIGNoYW5nZSB0aGUgc2Vjb25kIGVsZW1lbnRcbmNvcGllZExpc3RbMl1bMV0gPSAnZCdcblxuIyBQcmludCBvdXQgdGhlIG9yaWdpbmFsIGxpc3QgdG8gc2VlIHdoYXQgaGFwcGVuZWQgdG8gaXRcbnByaW50KG9iamVjdExpc3QpIn0=

Si ya dominas listas en Python, la siguiente sección te da respuestas simples a preguntas complejas.

Y si te preguntas qué hay más allá de las listas y qué ventajas ofrecen las librerías frente a las listas integradas, la próxima sección te interesará.

¡Sigue leyendo!

9. ¿Cómo funciona la comprensión de listas en Python?

La comprensión de listas es, básicamente, una forma elegante de construir listas. A quienes les gusta la matemática les encantará porque se parecen a notaciones matemáticas. Júzgalo tú:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Ilt4KioyIGZvciB4IGluIHJhbmdlKDEwKV0ifQ==

¿Qué significa? Tomas los números del 0 al 10 (sin incluir 10) y multiplicas cada uno por 2. Ejecuta el código y comprueba si el resultado coincide con lo esperado.

¿Fácil? Subamos un poco el nivel.

Supón que quieres la misma lista, pero multiplicando solo los números divisibles por 2. Con comprensión de listas también es sencillo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Ilt4KioyIGZvciB4IGluIHJhbmdlKDEwKSBpZiB4JTI9PTBdIn0=

Simplemente añades una condición con if. Si es TRUE, el número se multiplica por 2. En este caso, la condición es que el número sea divisible por 2 (sin resto).

En general, también puedes usar comprensión de listas para transformar listas en otras listas, que suena más difícil, ¿verdad?

Mira este ejemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Im15TGlzdCA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cblsobGFtYmRhIHg6IHgqeCkoeCkgZm9yIHggaW4gbXlMaXN0XSJ9

En este ejemplo ya tienes myList y la transformas con comprensión: for x in myList, para cada elemento se hace una operación.

Luego ves (lambda x: x*x). Para simplificar, recuerda que las funciones lambda son funciones anónimas creadas en tiempo de ejecución. Puedes ignorar esa parte y centrarte en x*x.

La función toma un elemento y lo multiplica por sí mismo. Como es anónima, debes pasarle el elemento de la lista: de ahí (lambda x: x*x)(x).

Dicho de otro modo, podrías reescribir la segunda línea como:

f = lambda x: x*x
[f(x) for x in range(10)]

Primero defines la lambda que eleva al cuadrado y luego, en la segunda línea, la aplicas a cada elemento.

Nota: además de comprensión de listas, existen la de sets y diccionarios.

No está nada mal, pero hay más por descubrir.

Sigue con las siguientes preguntas frecuentes para aprender sobre comprensión de listas anidadas y ver ejemplos prácticos de su utilidad en Python.

10. Cómo contar ocurrencias de un elemento de lista en Python

Como las listas no exigen unicidad (como sí los sets), quizá quieras saber no solo cuántas veces aparece un elemento concreto, sino también cuántas veces aparece cada elemento.

Abajo tienes ambas respuestas.

Contar las ocurrencias de un único elemento

Para contar las ocurrencias de un elemento concreto usa el método count():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgQ291bnQgdGhlIG9jY3VycmVuY2VzIG9mIHRoZSBudW1iZXIgNFxucHJpbnQoWzEsIDIsIDksIDQsIDUsIDQsIDFdLmNvdW50KDQpKVxuXG4jIENvdW50IHRoZSBvY2N1cnJlbmNlcyBvZiB0aGUgbGV0dGVyIFwiYVwiXG5saXN0ID0gW1wiZFwiLCBcImFcIiwgXCJ0XCIsIFwiYVwiLCBcImNcIiwgXCJhXCIsIFwibVwiLCBcInBcIl1cbmxpc3QuY291bnQoXCJhXCIpIn0=

Contar todas las ocurrencias de todos los elementos de una lista también se conoce como «hacer un tally».

Contar todos los elementos con count()

Para contar las ocurrencias de elementos en una lista, también puedes usar comprensión junto con count():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Imxpc3Q9IFtcImFcIixcImJcIixcImJcIl1cbltbeCxsaXN0LmNvdW50KHgpXSBmb3IgeCBpbiBzZXQobGlzdCldIn0=

Aquí primero conviertes la lista a set. Así te quedas solo con los elementos únicos, a y b. Luego, para cada elemento del set, llamas a count().

Recuerda: los sets solo contienen elementos únicos.

En este caso, primero se pasa a a list.count(x) y se cuentan todas sus apariciones en la lista original.

Contar todos los elementos con Counter()

Alternativamente, existe Counter(), más rápido, de la librería collections:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGBDb3VudGVyYCBmcm9tIHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXJcblxuIyBUaGlzIGlzIHlvdXIgbGlzdFxubGlzdCA9IFtcImFcIixcImJcIixcImJcIl1cblxuIyBQYXNzIGBsaXN0YCB0byBgQ291bnRlcigpYFxuQ291bnRlcihsaXN0KSJ9

Nota: Counter() suele ser más rápido cuando quieres contar todos los elementos.

11. Cómo dividir una lista en bloques de igual tamaño

Para partir tu lista en partes del mismo tamaño, puedes recurrir a zip() junto con iter():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBsaXN0IGB4YFxueCA9IFsxLDIsMyw0LDUsNiw3LDgsOV1cblxuIyBTcGxpdCBgeGAgdXAgaW4gY2h1bmtzIG9mIDNcbnkgPSB6aXAoKltpdGVyKHgpXSozKVxuXG4jIFVzZSBgbGlzdCgpYCB0byBwcmludCB0aGUgcmVzdWx0IG9mIGB6aXAoKWBcbmxpc3QoeSkifQ==

Este código funciona así:

  • iter() es un iterador sobre una secuencia.
  • [iter(x)] * 3 produce una lista con tres objetos listiterator: cada uno itera sobre x.
  • El * que se pasa a zip() antes que nada desempaqueta la secuencia en argumentos, de modo que pasas el mismo iterador tres veces a zip(), y extrae un elemento cada vez.

Espera. Ese último paso no se ha entendido.

Vamos paso a paso:

  1. Tendrás tres iteradores de lista, que puedes imaginar como:

[1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9]


  1. La primera vez, zip() toma un elemento de cada lista secuencialmente, quedando:

[1][2][3]


Nota: los iteradores recordarán cuál es el siguiente elemento.

  1. La segunda vez, se añaden elementos a las tres listas que acabas de crear y terminas con:

[1, 4], [2, 5], [3, 6]


  1. La última vez, repites el procedimiento y obtienes:

[1, 4, 7], [2, 5, 8], [3, 6, 9]


  1. Al hacer zip de estas tres listas, te queda:

[1, 2, 3], [4, 5, 6], [7, 8, 9]

Si quieres encapsular la lógica en una función, puedes hacerlo así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgTWV0aG9kIHRvIHNwbGl0IHVwIHlvdXIgbGlzdHMgaW50byBjaHVua3NcbmRlZiBjaHVua3MobGlzdCwgY2h1bmtTaXplKTpcbiAgICBcIlwiXCJZaWVsZCBzdWNjZXNzaXZlIGNodW5rU2l6ZS1zaXplZCBjaHVua3MgZnJvbSBsaXN0LlwiXCJcIlxuICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihsaXN0KSwgY2h1bmtTaXplKTpcbiAgICAgICAgeWllbGQgbGlzdFtpOmkgKyBjaHVua1NpemVdXG5cbiMgVXNlIHlvdXIgYGNodW5rc2AgZnVuY3Rpb24gdG8gcHJpbnQgb3V0IGNodW5rcyBvZiB0aGUgc2FtZSBzaXplXG5pbXBvcnQgcHByaW50XG5wcHJpbnQucHJpbnQobGlzdChjaHVua3MocmFuZ2UoMTAsIDc1KSwgMTApKSkifQ==

La función chunks() recibe una lista y un tamaño de bloque. Luego imprime: «Yield successive (tu tamaño)-sized chunks from list».

Después ves range(0, len(list), chunkSize): empieza en 0 y termina en la longitud de la lista, con paso igual a chunkSize.

Para cada elemento de esa lista generada por range(), produces un bloque de la lista original, desde el índice actual hasta índice + tamaño de bloque.

Por ejemplo, si pasa el índice 0, se produce la porción [0:2]. En la siguiente iteración, pasa el índice 2 (recuerda el paso) y se devuelve [2:4].

Nota: se usa pprint() (pretty print) para imprimir el resultado.

También puedes usar comprensión de listas en lugar de escribir una función:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgU2V0IHVwIHlvdXIgbGlzdCBhbmQgY2h1bmsgc2l6ZVxubGlzdCA9IHJhbmdlKDAsIDUwKVxuY2h1bmsgPSA1XG5cbiMgU3BsaXQgdXAgeW91ciBsaXN0IGludG8gY2h1bmtzXG5bbGlzdFtpOmkgKyBjaHVua10gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGxpc3QpLCBjaHVuayldIn0=

12. Cómo iterar sobre una lista en Python

Puedes recorrer cualquier lista fácilmente con un bucle for. Para quien no haya trabajado mucho con ellos: el for permite ejecutar una acción por cada elemento de la lista.

En Python, un for tiene este aspecto:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm15bGlzdCA9IFtbMSwyLDNdLFs0LDUsNiw3XSxbOCw5LDEwXV1cblxuIyBMb29wIG92ZXIgeW91ciBsaXN0IGFuZCBwcmludCBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2Ygc2l6ZSAzXG5mb3IgeCBpbiBteWxpc3Q6XG4gICAgICBpZiBsZW4oeCk9PTM6XG4gICAgICAgIHByaW50KHgpIn0=

Tienes una lista mylist y le dices a Python que compruebe si la longitud de cada elemento es 3. Como hay dos listas con tres elementos ([1,2,3] y [8, 9,10]), solo se imprimirán esas.

Nota: la x del bucle puede llamarse element, listElement… Prueba en la consola.

Aquí el resultado no muestra los índices. Si quieres iterar mostrando el índice, hazlo así:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm15TGlzdCA9IFszLDQsNSw2XVxuXG4jIExvb3Agb3ZlciBgbXlMaXN0YCBhbmQgcHJpbnQgdHVwbGVzIG9mIGFsbCBpbmRpY2VzIGFuZCB2YWx1ZXMgXG5mb3IgaSwgdmFsIGluIGVudW1lcmF0ZShteUxpc3QpOlxuICAgICBwcmludChpLCB2YWwpIn0=

Como quieres imprimir elementos e índice, debes reflejarlo en el for. Por eso usamos enumerate(myList), que devuelve índice y valor. Naturalmente, lo ponemos al inicio del for: i, val indica que esperamos un índice y un valor.

Nota: también puedes usar comprensión de listas para iterar. Aquí, los resultados se imprimen sin tener que pasar por print():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibXlMaXN0ID0gW1sxLDIsM10sWzQsNSw2LDddLFs4LDksMTBdXSIsInNhbXBsZSI6Ilt4IGZvciB4IGluIG15TGlzdCBpZiBsZW4oeCk9PTNdIn0=

13. Cómo aplanar listas de listas

Para convertir una lista de listas en una lista simple, puedes usar sum(). No olvides pasar tu lista y una lista vacía como segundo argumento:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBpbml0aWFsIGxpc3Qgb2YgbGlzdHNcbmxpc3QgPSBbWzEsMl0sWzMsNF0sWzUsNl1dXG5cbiMgRmxhdHRlbiBvdXQgeW91ciBvcmlnaW5hbCBsaXN0IG9mIGxpc3RzIHdpdGggYHN1bSgpYFxuc3VtKGxpc3QsIFtdKSJ9

También puedes usar dos enfoques alternativos para aplanar tus listas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdE9mTGlzdHMgPSBbWzEsMl0sWzMsNF0sWzUsNl1dIiwic2FtcGxlIjoiIyBZb3UgY2FuIHJlZHVjZSB0aGUgbGlzdHMgb2YgbGlzdHMgb2YgbGlzdHMgbGlrZSB0aGlzXG5mcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlXG5wcmludChyZWR1Y2UobGFtYmRhIHgseTogeCt5LGxpc3RPZkxpc3RzKSlcblxuIyBPciB5b3UgY2FuIHVzZSBsaXN0IGNvbXByZWhlbnNpb25cbnByaW50KFtpdGVtIGZvciBzdWJsaXN0IGluIGxpc3RPZkxpc3RzIGZvciBpdGVtIGluIHN1Ymxpc3RdKSJ9
    • Usar reduce() con una lambda. reduce() reduce el iterable a un único valor según la función que le pases. En este caso, sumas los elementos de forma acumulativa: [1,2] se suma con [3,4] y el resultado con [5,6]. Visualmente:
([1,2]+[3,4])+[5,6]

Recuerda: el operador + concatena listas.

  • La segunda opción es usar comprensión de listas. Es un for anidado: primero sublist in list (o [1, 2], [3, 4], [5, 6]) y luego item for item in sublist, imprimiendo cada elemento de cada sublista.

Otra forma de verlo es reescribirlo como un for normal:

list1 = []

for sublist in list:
  for item in sublist:
    list1.append(item)

14. Cómo obtener la intersección de dos listas en Python

Intersección con comprensión de listas

Para obtener la intersección de dos listas puedes usar filter().

Lo ilustramos abajo. Ya hemos definido list1 y list2. Usa la consola si quieres ver su contenido.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFtbMTMsIDE3LCAxOCwgMjEsIDMyXSwgWzcsIDExLCAxMywgMTQsIDI4XSwgWzEsIDUsIDYsIDgsIDE1LCAxNl1dIiwic2FtcGxlIjoiIyBJbnRlcnNlY3QgYm90aCBsaXN0cyB3aXRoIGxpc3QgY29tcHJlaGVuc2lvblxuaW50ZXJzZWN0aW9uID0gW2xpc3QoZmlsdGVyKGxhbWJkYSB4OiB4IGluIGxpc3QxLCBzdWJsaXN0KSkgZm9yIHN1Ymxpc3QgaW4gbGlzdDJdXG5cbiMgUHJpbnQgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJzZWN0aW9uXG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBJbnRlcnNlY3QgYm90aCBsaXN0cyB3aXRoIGxpc3QgY29tcHJlaGVuc2lvblxuaW50ZXJzZWN0aW9uID0gW2xpc3QoZmlsdGVyKGxhbWJkYSB4OiB4IGluIGxpc3QxLCBzdWJsaXN0KSkgZm9yIHN1Ymxpc3QgaW4gbGlzdDJdXG5cbiMgUHJpbnQgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJzZWN0aW9uXG5wcmludChpbnRlcnNlY3Rpb24pIiwic2N0IjoicHJlZGVmX21zZyA9IFwiZGlkIHlvdSBwYXNzIGBpbnRlcnNlY3Rpb25gIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbiMgVGVzdCBgcHJpbnRgXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyA9IFwiV2F5IHRvIGdvIVwiIn0=

En el código, la parte de filter() toma cada elemento de cada sublista y comprueba si está en la lista fuente list1. La comprensión se ejecuta para cada sublista en list2.

Nota: como filter() devuelve un iterable, debes envolver lo que pongas dentro con list(). Prueba a quitarlo.

Para mayor legibilidad, también puedes usar comprensiones anidadas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFtbMTMsIDE3LCAxOCwgMjEsIDMyXSwgWzcsIDExLCAxMywgMTQsIDI4XSwgWzEsIDUsIDYsIDgsIDE1LCAxNl1dIiwic2FtcGxlIjoiIyBBbiBpbnRlcnNlY3Rpb24gb2YgYm90aCBsaXN0cywgc3RvcmVkIGluIGBpbnRlcnNlY3Rpb25gXG5pbnRlcnNlY3Rpb24gPSBbW3ggZm9yIHggaW4gc3VibGlzdCBpZiB4IGluIGxpc3QxXSBmb3Igc3VibGlzdCBpbiBsaXN0Ml1cblxuIyBQcmludCB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnNlY3Rpb25cbnByaW50KGludGVyc2VjdGlvbikifQ==

Intersección de listas con set()

Si el orden no importa y no te preocupan los duplicados, puedes usar la intersección de sets:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFsxMywgMTcsIDE4LCAyMSwgMzIsIDcsIDExLCAxMywgMTQsIDI4LCAxLCA1LCA2LCA4LCAxNSwgMTZdIiwic2FtcGxlIjoiIyBNYWtlIHVzZSBvZiB0aGUgbGlzdCBhbmQgc2V0IGRhdGEgc3RydWN0dXJlc1xucHJpbnQobGlzdChzZXQobGlzdDEpICYgc2V0KGxpc3QyKSkpXG5cbiMgVXNlIGBpbnRlcnNlY3Rpb24oKWBcbnByaW50KGxpc3Qoc2V0KGxpc3QxKS5pbnRlcnNlY3Rpb24obGlzdDIpKSkifQ==

En el primer ejemplo, conviertes ambas listas en sets, haces su intersección y vuelves a lista. El orden del resultado será arbitrario. También puedes convertir la mayor en set y luego obtener la intersección con cualquier iterable usando intersection().

Nota: para que estos enfoques funcionen, tu lista no debe contener otras listas. Por eso list2 es distinta. ¡Imprímela para asegurarte!

15. Cómo eliminar duplicados de una lista en Python

Como vimos al principio, si quieres almacenar una colección única de elementos desordenados, lo mejor es usar un set.

Para crear un set desde cualquier iterable, pásalo a set(). Si luego necesitas volver a una lista, pasa el set a list().

Recuerda: un iterable puede ser una lista, un diccionario… Comprueba si una variable es iterable aplicándole .__iter__.

Este ejemplo muestra claramente cómo usar set() para eliminar duplicados de tu lista:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBsaXN0IHdpdGggZHVwbGljYXRlIHZhbHVlc1xuZHVwbGljYXRlcyA9IFsxLCAyLCAzLCAxLCAyLCA1LCA2LCA3LCA4XVxuXG4jIFByaW50IHRoZSB1bmlxdWUgYGR1cGxpY2F0ZXNgIGxpc3RcbnByaW50KGxpc3Qoc2V0KGR1cGxpY2F0ZXMpKSlcblxuIyBBIGxpc3Qgd2l0aCBzbWFsbCBudW1iZXJzIFxuc21hbGxOdW1iZXJzID0gWzEsIDIsIDNdXG5cbiMgUHJpbnQgdGhlIHVuaXF1ZSBgZHVwbGljYXRlc2AgbGlzdCB3aXRob3V0IHRoZSBzbWFsbCBudW1iZXJzXG5saXN0KHNldChkdXBsaWNhdGVzKSAtIHNldChzbWFsbE51bWJlcnMpKSJ9

Como ves en el último resultado, no se mantiene el orden original tras restar los elementos de smallNumbers. Como los sets son desordenados, cualquier orden previo se pierde. Al convertirlo de nuevo a lista, se crea un orden arbitrario.

Si el orden te importa, tendrás que usar otro mecanismo. En esta página se trata el tema con más detalle.

16. ¿Por qué NumPy en lugar de listas de Python?

En general, hay cuatro razones por las que programadores de Python prefieren arrays de NumPy frente a listas:

  • porque los arrays de NumPy ocupan menos que las listas,
  • porque leer y escribir elementos es más rápido con NumPy,
  • porque NumPy es más cómodo gracias a sus operaciones vectoriales y matriciales,
  • porque NumPy puede ser más eficiente al estar mejor implementado.

17. Cómo crear arrays vacíos de NumPy

Si solo quieres crear un array vacío de NumPy, ejecuta lo siguiente:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImltcG9ydCBudW1weVxubnVtcHkuYXJyYXkoW10pIn0=

Si tu objetivo es inicializar un array de NumPy, también puedes optar por estas opciones:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaW1wb3J0IG51bXB5Iiwic2FtcGxlIjoiIyBNYWtlIGEgTnVtUHkgYXJyYXkgb2YgZm91ciByb3dzIGFuZCB0d28gY29sdW1ucyBhbmQgZmlsbGVkIHdpdGggMFxubnVtcHkuemVyb3Moc2hhcGU9KDQsMikpXG5cbiMgTWFrZSBhIE51bVB5IGFycmF5IG9mIDEgdmFsdWVzIG9mIHRocmVlIGNvbHVtbnNcbm51bXB5Lm9uZXMoMylcblxuIyBNYWtlIGFuIGVtcHR5IE51bVB5IGFycmF5XG5udW1weS5lbXB0eShzaGFwZT0oMCwwKSkifQ==

No dejes de consultar esta documentación si buscas más formas de inicializar tu array de NumPy.

18. Cómo hacer operaciones matemáticas con listas en Python

A menudo no solo usamos listas para almacenar valores, sino también para realizar operaciones matemáticas. Esta sección cubre las preguntas más frecuentes al respecto.

Cómo calcular la media ponderada de una lista

La media ponderada es similar a la media, pero devuelve un número que depende del valor y de su peso.

Suena denso, pero veamos un ejemplo:

cost = [0.424, 0.4221, 0.4185, 0.4132, 0.413]
cases = [10, 20, 30, 40, 50]

Puedes calcularla fácilmente con este código:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiY29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoiZm9yIGMgaW4gcmFuZ2UobGVuKGNvc3QpKTpcbiAgIGNvc3RbY10gPSAoY29zdFtjXSAqIGNhc2VzW2NdIC8gc3VtKGNhc2VzKSlcbmNvc3QgPSBzdW0oY29zdClcbnByaW50KGNvc3QpIn0=

También puedes optar por cualquiera de estos dos enfoques. Primero:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiY29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoic3VtKGNvc3RbY10gKiBjYXNlc1tjXSAvIHN1bShjYXNlcykgZm9yIGMgaW4gcmFuZ2UobGVuKGNvc3QpKSkifQ==

O este otro:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiY29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoic3VtKGNvc3RbY10gKiBjYXNlc1tjXSBmb3IgYyBpbiByYW5nZShsZW4oY29zdCkpKSAvIHN1bShjYXNlcykifQ==

Por último, puedes calcularla con ayuda de zip().

Truco: crea una variable costAndCases a la que asignes zip() con cost y cases. Verás cómo se crea otra lista con tuplas: el primer valor es el coste y el segundo, las unidades a ese precio.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiY29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoiIyBTZWUgd2hhdCBgemlwKClgIGRvZXMgdG8geW91ciBgY29zdGAgYW5kIGBjYXNlc2BcbnByaW50KGxpc3QoemlwKF9fX18sIF9fX18pKSlcblxuIyBDYWxjdWxhdGUgdGhlIHdlaWdodGVkIGF2ZXJhZ2VcbnByaW50KHN1bShbeCAqIHkgZm9yIHgsIHkgaW4gemlwKGNvc3QsIGNhc2VzKV0pIC8gc3VtKGNhc2VzKSkiLCJzb2x1dGlvbiI6IiMgU2VlIHdoYXQgYHppcCgpYCBkb2VzIHRvIHlvdXIgbGlzdHNcbnByaW50KGxpc3QoemlwKGNvc3QsIGNhc2VzKSkpXG5cbiMgQ2FsY3VsYXRlIHRoZSB3ZWlnaHRlZCBhdmVyYWdlXG5wcmludChzdW0oW3ggKiB5IGZvciB4LCB5IGluIHppcChjb3N0LCBjYXNlcyldKSAvIHN1bShjYXNlcykpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIGFkZCB0aGUgYHppcCgpYCBmdW5jdGlvbiBhbmQgdG8gcGFzcyBgY29zdGAgYW5kIGBjYXNlYCB0byBpdCFcIlxuIyBUZXN0IG9iamVjdCBjb3N0QW5kQ2FzZXNcbnRlc3RfZnVuY3Rpb24oXCJ6aXBcIiwgXG4gICAgICAgICAgICAgIG5vdF9jYWxsZWRfbXNnID0gXCJIYXZlIHlvdSBjcmVhdGVkIHRoZSBjb3N0QW5kQ2FzZXMgdmFyaWFibGU/IERvbid0IGZvcmdldCB0byBwYXNzIGBjb3N0YCBhbmQgYGNhc2VzYCB0byBgemlwKClgIHRvIGNyZWF0ZSBpdCFcIixcbiAgICAgICAgICAgICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLCBcbiAgICAgICAgICAgICAgZG9fZXZhbD1GYWxzZSlcbnN1Y2Nlc3NfbXNnKFwiQXdlc29tZSB3b3JrIVwiKSJ9

Recuerda qué hace zip() con tus listas: literalmente, las «empareja». Por ejemplo, zip(cost, cases) devolvería [(0.424, 10), (0.4221, 20), (0.4185, 30), (0.4132, 40), (0.413, 50)].

Cómo calcular el cuantil de una lista en Python

Los cuantiles son clave para resumir tu conjunto de datos, junto con el mínimo y el máximo. También tienes el percentil 25, 50 y 75: primer cuartil, mediana y tercer cuartil.

En total necesitas cinco números para resumir el conjunto: mínimo, máximo, mediana y dos cuartiles.

El mínimo y el máximo son fáciles de encontrar, ¿pero los percentiles?

Es sencillo. Supón que tienes 25 observaciones, ordenadas de menor a mayor:

  • El percentil 25 (primer cuartil) es 0,25 × 25 = 6,25; redondeando hacia arriba, 7: la 7.ª observación.
  • El tercer cuartil (percentil 75) es 0,75 × 25 = 18,75; redondeando, 19: la 19.ª observación.
  • La mediana es 0,5 × 25 = 12,5; redondeando, la 13.ª.

¿Cómo programarlo para tu lista?

La forma más fácil es con NumPy. Sigue las instrucciones del ejercicio interactivo para calcular los percentiles de tu lista:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgX19fXyBhcyBfX1xuXG4jIE1ha2UgYSBOdW1QeSBhcnJheVxuYSA9IG5wLmFycmF5KFsxLDIsMyw0LDVdKVxuXG4jIFJldHVybiB0aGUgNTB0aCBwZXJjZW50aWxlIG9mIG91ciBOdW1QeSBhcnJheVxucCA9IG5wLnBlcmNlbnRpbGUoYSwgNTApXG5cbiNQcmludCB0aGUgcmVzdWx0XG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBJbXBvcnQgbnVtcHkgYXMgbnBcbmltcG9ydCBudW1weSBhcyBucFxuXG4jIE1ha2UgYSBOdW1QeSBhcnJheVxuYSA9IG5wLmFycmF5KFsxLDIsMyw0LDVdKVxuXG4jIFJldHVybiB0aGUgNTB0aCBwZXJjZW50aWxlIG9mIG91ciBOdW1QeSBhcnJheVxucCA9IG5wLnBlcmNlbnRpbGUoYSwgNTApXG5cbiNQcmludCB0aGUgcmVzdWx0XG5wcmludChwKSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkhhdmUgeW91IGltcG9ydGVkIG51bXB5IGFuZCBwcmludGVkIG91dCB0aGUgcGVyY2VudGlsZSByZXN1bHQ/XCJcbnF1YW50aWxlX3ByaW50X21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIHBhc3MgYHBgIHRvIGBwcmludCgpYCFcIlxuaW1wb3J0X21zZyA9IFwiSGF2ZSB5b3UgaW1wb3J0ZWQgbnVtcHk/XCJcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1xdWFudGlsZV9wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuIyBUZXN0IGltcG9ydCBgbnVtcHlgXG50ZXN0X2ltcG9ydChcIm51bXB5XCIsIHNhbWVfYXMgPSBUcnVlLCBub3RfaW1wb3J0ZWRfbXNnID0gaW1wb3J0X21zZywgaW5jb3JyZWN0X2FzX21zZyA9IHByZWRlZl9tc2cpXG5zdWNjZXNzX21zZyhcIkZhbnRhc3RpYyFcIikifQ==

Cómo sumar listas elemento a elemento

Supón que tienes dos listas:

list1=[1, 2, 3]
list2=[4, 5, 6]

Y quieres sumarlas elemento a elemento: 1 con 4, 2 con 5 y 3 con 6. Tienes dos formas de hacerlo.

¡Sigue leyendo!

… con Python básico

Puedes usar map con operator.add para sumar elemento a elemento:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDE9WzEsIDIsIDNdXG5saXN0Mj1bNCwgNSwgNl0iLCJzYW1wbGUiOiJmcm9tIG9wZXJhdG9yIGltcG9ydCBhZGRcbmxpc3QobWFwKGFkZCwgbGlzdDEsIGxpc3QyKSkifQ==

El resultado será la lista [5, 7, 9].

Nota: necesitas list() para imprimir el resultado de map().

O puedes usar zip() con una comprensión de listas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDE9WzEsIDIsIDNdXG5saXN0Mj1bNCwgNSwgNl0iLCJzYW1wbGUiOiJbc3VtKHgpIGZvciB4IGluIHppcChsaXN0MSwgbGlzdDIpXSJ9

… con NumPy

Los ejemplos anteriores van perfectos con listas pequeñas, pero con más datos conviene usar numpy para facilitar el proceso.

Asegúrate de importar numpy y convertir tus listas a arrays de NumPy:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgX19fXyBhcyBfX1xuXG4jIE1ha2UgeW91ciBsaXN0cyBpbnRvIE51bVB5IGFycmF5c1xudmVjdG9yMSA9IG5wLmFycmF5KFsxLCAyLCAzXSlcbnZlY3RvcjIgPSBucC5hcnJheShbNCwgNSwgNl0pXG5cbiMgRWxlbWVudC13aXNlIGFkZGl0aW9uXG5zdW1fdmVjdG9yID0gdmVjdG9yMSArIHZlY3RvcjIgXG5cbiMgUHJpbnQgdGhlIHJlc3VsdFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgbnVtcHkgYXMgbnBcblxuIyBNYWtlIHlvdXIgbGlzdHMgaW50byBOdW1QeSBhcnJheXNcbnZlY3RvcjEgPSBucC5hcnJheShbMSwgMiwgM10pXG52ZWN0b3IyID0gbnAuYXJyYXkoWzQsIDUsIDZdKVxuXG4jIEVsZW1lbnQtd2lzZSBhZGRpdGlvblxuc3VtX3ZlY3RvciA9IHZlY3RvcjEgKyB2ZWN0b3IyIFxuXG4jIFByaW50IHRoZSByZXN1bHRcbnByaW50KHN1bV92ZWN0b3IpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBpbXBvcnQgbnVtcHkgYW5kIHByaW50IHRoZSByZXN1bHQ/XCJcbnByaW50X21zZz0gXCJEaWQgeW91IHBhc3MgYHN1bV92ZWN0b3JgIGB0byBwcmludCgpYFwiXG5pbXBvcnRfbXNnPVwiRG9uJ3QgZm9yZ2V0IHRvIGltcG9ydCBudW1weSBhcyBucCFcIlxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG50ZXN0X2ltcG9ydChcIm51bXB5XCIsIHNhbWVfYXMgPSBUcnVlLCBub3RfaW1wb3J0ZWRfbXNnID0gaW1wb3J0X21zZywgaW5jb3JyZWN0X2FzX21zZyA9IHByZWRlZl9tc2cpXG5zdWNjZXNzX21zZyA9IFwiWW91J3JlIG9mZmljaWFsbHkgYSBQeXRob24gbGlzdCBleHBlcnQhXCIifQ==

¿Qué sigue en tu camino de data science con Python?

Has llegado al final de nuestro tutorial interactivo sobre listas en Python. Ha sido bastante material y trabajo, ¡pero lo has conseguido!

Las listas son solo una parte pequeña pero esencial de tu camino en data science con Python. ¡Hay mucho más por explorar! Nuestro curso interactivo Intro to Python for Data Science es perfecto si quieres aprender más sobre Python y su uso en data science: empieza desde lo más básico y, poco a poco, te lleva a un nivel intermedio presentándote NumPy. Ideal si tienes poca experiencia programando (en Python).

Si ya tienes un nivel más avanzado, quizá te interese nuestro curso Intermediate Python For Data Science, pensado para quienes quieren llevar sus habilidades de data science y Python al siguiente nivel. Te llevará aún más lejos en tu aprendizaje: te presenta más librerías (como matplotlib y pandas), conceptos como lógica, control de flujo y filtrado, e incluye un caso práctico de data science para consolidar tus competencias.

¿Ya usas Python para data science y quieres ir más allá? Puede interesarte nuestro curso Importing Data Into Python o considerar leer nuestra serie de tutoriales The importance of preprocessing in data science and the machine learning pipeline.

Temas
Python
Análisis de datos

Aprende más sobre Python

Curso

Introducción a la ciencia de datos con Python

4 h
502.5K
Sumérgete en la ciencia de datos con Python y aprende a analizar y visualizar los datos con eficacia. No necesitas saber de programación.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

blog

Las 20 mejores preguntas de entrevista sobre NumPy: de básico a avanzado

Prepárate para tu próxima entrevista de ciencia de datos con preguntas esenciales de NumPy, de básico a avanzado. Perfectas para afianzar tus habilidades y ganar confianza.
Tim Lu's photo

Tim Lu

9 min

blog

Las 36 preguntas y respuestas más importantes sobre Python para entrevistas de trabajo en 2026

Preguntas esenciales sobre Python para entrevistas de trabajo con ejemplos para personas en busca de empleo, estudiantes de último año y profesionales de datos.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Tutorial

Python Copy List: Lo que debes saber

Comprende cómo copiar listas en Python. Aprende a utilizar las funciones copy() y list(). Descubre la diferencia entre copias superficiales y profundas.
Allan Ouko's photo

Allan Ouko

7 min

Tutorial

Tutorial y ejemplos de funciones y métodos de listas en Python

Aprende sobre las funciones y métodos de las listas de Python. ¡Sigue ahora los ejemplos de código para list() y otras funciones y métodos de Python!
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutorial

Tutorial de los métodos .append() y .extend() de Python

Aprende a utilizar los métodos .append() y .extend() para añadir elementos a una lista.
DataCamp Team's photo

DataCamp Team

2 min

Tutorial

Arreglos en Python

Arreglos de Python con ejemplos de código. ¡Aprende hoy mismo a crear e imprimir arreglos con Python NumPy!
DataCamp Team's photo

DataCamp Team

3 min

Ver MásVer Más