Listas anidadas - Métodos - Python avanzado - Capítulo 4


En este capítulo voy a mostrarte peculiaridades de las listas de Python y algunos métodos que podrás utilizar con ellas.

Python es un lenguaje versátil. Un ejemplo de esto es que podemos tener una lista que contiene diferentes tipos de datos y podemos trabajar con ellos de forma individual como en el siguiente ejemplo:

Código

a = [1,"PF", False, 100.657]
print(type(a[2]))

Resultado

En el print() hago una llamada a la posición 2 de la lista que es un booleano. El hecho que devuelva el tipo de dato bool y no list, indica que podemos utilizar ese booleano separadamente de la lista o cualquiera de sus elementos.

class 'bool'

Se pueden hacer muchas combinaciones, por ejemplo listas dentro de otras (anidadas) todas con los mismos tipos de datos o con tipos de datos diferentes.

Código

a = [[10, 100, 1000], ["texto1", "texto2"], [True]]
b = [[10, "texto1", 1000], [10, "texto2"], [True]]

Para acceder a toda una sublista o lista anidada se hace con su número de posición.
De las listas anteriores, para acceder a la primera sublista tendrás que hacerlo llamando de esta forma:

Código

print(a[0])
print(a[1])
print(a[2])

Resultado

Llamamos a las sublistas cómo si fuesen posiciones individuales de la lista.

[10, 100, 1000]
['texto1', 'texto2']
[True]

Ahora para poder llamar a las posiciones internas de las sublistas debemos añadir un segundo número de posición.

Código

print(a[0][0])

Resultado

Llamando a la posición 0 de la lista y a la posición 0 de la sublista obtenemos el valor 0 de la sublista 0:

10

Para obtener por ejemplo el valor "texto2" de la lista b en la segunda sublista, lo haremos con las siguientes posiciones:

Código

print(b[1][1])

Resultado

texto2

Supón ahora que añades elementos a la lista principal, es decir, fuera de las sublistas. Para llamar a estos elementos, lo hacemos con una sola posición.

En el siguiente código, he añadido en la lista b unos cuantos valores antes de las sublistas, pues si llamas a la posición 0, estás llamado al valor texto, la 1 a 1400, la 2 a True y 4, 5 o 6 a las sublistas.

Código

a = [[10, 100, 1000], ["texto1", "texto2"], [True]]
b = ["texto 3", 1400, True, [10, "texto1", 1000], [10, "texto2"], [True]]
print(b[0])

Resultado

texto 3

Lo mismo que estoy explicándote con las listas, lo puedes aplicar a las tuplas, las posiciones funcionan igual.

Acceder a posiciones negativas de listas anidadas

Algo que también puedes hacer, es acceder a las posiciones negativas de las listas anidadas.

Código

print(a[0][-1])

Resultado

1000

Acceder a posiciones de un string en una lista

Tomando como referencia las listas a y b anteriores, esto es lo que pasa si indicas una segunda posición de un elemento de tipo string que no está anidado en otra lista, obtienes un solo caracter:

Código

print(b[0][-1])

Resultado

Este número es la última posición del string "texto 3".

3

Para acceder a la posición 2 del string "texto1" de la lista b de la lista anidadas de la posición 3, lo debes hacer añadiendo una posición extra:

Código

print(b[3][1][2])

Resultado

x

Si te estás perdiendo con estos ejemplos, déjame un comentario y te lo explico más detalladamente. El vídeo de este capítulo también te puede ayudar mucho a entenderlo.

Métodos para listas en listas anidadas

Si queremos añadir nuevos elementos a una lista, lo podemos hacer por ejemplo con el método append(), pero si lo aplico, ¿dónde se va a almacenar este nuevo elemento? la respuesta es al final de la lista principal. ¿Pero y si quiero añadirlo al final de una sublista?
Nombre de la lista, posición de sublista, append() y el valor a agregar.

Código

a[0].append(10000)
print(a)

Resultado

Este valor se añade en la primera sublista (posición 0 de la lista) al final.

[[10, 100, 1000, 10000], ['texto1', 'texto2'], [True]]

Invertir el orden de listas anidadas con reverse()

También se puede revertir el orden de las sublistas con reverse().

Código

b.reverse()
print(b)

Resultado

El resultado es sencillamente la misma lista con sus sublistas ordenadas al revés.

[[True], [10, 'texto2'], [10, 'texto1', 1000], True, 1400, 'texto 3']

Además, por ejemplo, podemos invertir así el contenido solo de los elementos de una sublista:

Código

a[0].reverse()
print(a)

Resultado

[[1000, 100, 10], ['texto1', 'texto2'], [True]]

Dejo el capítulo aquí, ya que hay tantísimas cosas que podría mostrar pero no podemos verlo en este capítulo. Prefiero que vayas viendo otros temas y no aburrirte con mucho de lo mismo.

Te recomiendo, que con lo que has visto hasta ahora, vayas haciendo pruebas con otros métodos a ver que pasa. Así es cómo se aprende.


Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.