Curso de Python avanzado

Las dimensiones de las listas anidadas de Python

Capítulo 4: Listas anidadas - Métodos

En este capítulo voy a mostrarte peculiaridades de las listas anidadas (con dimensiones) 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:

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

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.

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:

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

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.

print(a[0][0])

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:

print(b[1][1])
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.

a = [[10, 100, 1000], ["texto1", "texto2"], [True]]
b = ["texto 3", 1400, True, [10, "texto1", 1000], [10, "texto2"], [True]]
print(b[0])
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.

print(a[0][-1])
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 carácter:

print(b[0][-1])

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:

print(b[3][1][2])
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 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.

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

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().

b.reverse()
print(b)

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:

a[0].reverse()
print(a)
[[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.

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.

Programación Fácil YouTube

Suscríbete

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.