Listas, Tuplas y Range en Python 3: Similitudes y diferencias.

Lista y tupla run
-Vamos a ver Listas en python!! Y no hablamos de la lista del mercado ni la de invitados!!

Aunque su funcionalidad nos permita realizar una!. Las Listas y Tuplas en python se refieren a una zona de almacenamiento contiguo donde podemos guardar numerosos elementos.

Simple y sencillo es como si almacenamos varios datos dentro de una misma variable!! Recuerda que en la entrada sobre Variables te dije que podían ser tranquilamente tuplas, listas, conjuntos, etc. Pueden ser también mutables o inmutables (en el caso de las tuplas).

Como ya deberías saber mutables son aquellas que se pueden editar en tiempo de ejecución, es decir, mientras nuestro programa o script está funcionando. E inmutables, pues todo lo contrario podremos editarlas pero no mientras el programa se ejecute.

 

Listas en python

Como dijimos anteriormente podemos definir una lista como una zona de almacenamiento contigua donde podemos almacenar numerosos y diferentes tipos de datos, la misma puede editarse, modificarse mediante métodos siendo mutable como ya explique anteriormente!

Por lo que decimos también que las listas son datos estructurados almacenados en una variable. Un conjunto de datos que pueden ser simples o estructurados agrupados dentro de una variable a la que Python le asigna el tipo lista. Me has comprendido?

Veamos ahora su sintaxis!

Sintaxis de Listas[ ]:

Para crear un lista simplemente lo hacemos como si declaramos una variable pero almacenando en ella dentro de corchetes los elementos o ítems:

Objetos = ["Casa", "coche", "puerta"]

Numeros = [111, 222, 333, 444, 555, 666]

 

Como vemos mas arriba creamos dos listas «Objetos» y «Números«, la primera contiene elementos de tipo String (texto). Por lo  tanto deben ir entre comillas y separados por coma.

De esta forma hemos creados dos!

Pero también pueden ser creadas sin especificar los elementos que contienen, porque al ser mutables los podemos agregar después. No es así en el caso de las tuplas que obligadamente debemos especificar al momento de crearla cuáles serán los elementos que vamos a almacenar en ella!

Para crear una vacía lo hacemos de igual modo pero sin elementos, siempre respetando la sintaxis y colocando los debidos «Corchetes»:

List1 = []


 

 

Tuplas en python

Una Tupla es la igual que una lista, una zona de almacenamiento contigua donde podemos almacenar diferentes y numerosos elementos. Pero con algunas similitudes y diferencias muy marcadas que siempre debes recordar.

Las tuplas son variables donde se almacenan diferentes tipos de datos estructurados que deben estar ordenados desde el comienzo.

Las tuplas son inmutables, no se pueden modificar durante la ejecución del programa. Por ende al crearla debes colocar si o si los elementos que se van a almacenar. Veamos ahora un ejemplo de tuplas y su sintaxis:

Sintaxis de Tuplas( ):

Cosas = ("casa", "puerta", "reloj", "mesa", "silla", "banco", "cuadro", "alfombra")

Numeros = (1, 2, 3, 4, 55)

Como vemos más arriba creamos dos Tuplas «Cosas» y «Numeros«, la primera contiene elementos de tipo String (texto). Por lo  tanto deben ir entre comillas y separados por coma.

De esta forma hemos creados dos tuplas!

Recuerda que en las tuplas debes obligadamente especificar al momento de crearla cuáles son los elementos que vamos a almacenar!

Siempre que creemos una tupla debemos utilizar «paréntesis«, esto le indica a Python que se trata de una Tupla y no de una lista, o viceversa.

 

 


Diferencias y similitudes entre listas y tuplas:

Recordemos que:

 

Listas en Python
Tuplas en Python
Son Dinámicas
Son Estáticas
Utilizamos Corchetes [ ]
Utilizamos Paréntesis ( )
Elementos separados por coma
Elementos separados por coma
List = [1, 2]
Tupla = (1, 2)
Acceso a elementos [Índice]
Acceso a elementos [Índice]

 


 

 

Accediendo a Listas y Tuplas:

Pero, ¿Cómo accedemos a estos elementos que almacenamos dentro de ellas?

Aquí es donde comprenderás su utilidad, para acceder a los elementos debemos hacerlo teniendo en cuenta que a cada elemento almacenado en cualquiera de las dos se le asigna un Índice.

Un índice es un número que identifica el elemento dentro del grupo de elementos o ítems, siempre comenzando por cero.

Aunque modifiquemos los elementos siempre el primero será el cero y a partir de allí irá en aumento.

A la lista que creamos anteriormente le corresponden los siguientes:

Objetos = ["Casa", "coche", "puerta"]

 

Objetos =
[«casa»,
«coche»,
«puerta»]
Indice012

 

Numeros = [111, 222, 333, 444, 555, 666]

 

Numeros =
[111,
222,
333,
444,
555,]
Indice01234

 

Entonces simplemente si yo quiero acceder al Número «111» de la Lista «Numeros» debo especificar la lista y seguido entre «Corchetes», el número del índice que le corresponde:

Numeros[0]

Resultado: 111

Y esto debería mostrar el número 111 correspondiente al Índice 0. O en el caso de la lista «Objetos», el elemento «casa».

Objetos[0]

Resultado: casa

Ahora si queremos imprimir un elemento de las tuplas, lo hacemos de la misma manera utilizando corchetes:

Cosas[2]

Resultado: Reloj

Esto nos muestra el elemento reloj que pertenece al indice 2 como colocamos entre paréntesis.

Numeros[2]

Resultado: 3

Y aquí nos imprime el número 3 que corresponde al índice 2. Esto se pone confuso cuando es una lista o tupla de números, pero recordemos que el indexado siempre comienza con el «0».

Tanto para Acceder a Listas o Tuplas en python se usan Corchetes, los paréntesis son sólo para indicar cuando creamos la tupla.

 

Bien ahora te voy a dejar mi clásico gif en spoiler, poniendo en práctica todo lo anterior en el intérprete de Python :B

Muéstrame la jodida imagen!

Listas y Tuplas en Intérprete de Python 3

Es importante destacar que si ingresas un Índice que no existe por ejemplo «100» te mostrará un error!!.


 

Slice : cortando Listas y Tuplas en Python

 

Slice en español quiere decir rebanada o pedazo y hace referencia a un recorte de una lista o tupla.Slice

Como vimos anteriormente para acceder a cualquiera de estas se coloca el Índice del elemento entre corchetes. Pero, ¿qué sucede si queremos mostrar un «pedazo», «parte» o rebanada de la Lista y Tupla y no solo un elemento?. Para eso podemos especificar un índice de inicio y un índice de final y entonces nos mostrará una parte, lo hacemos de la siguiente manera:

 

Numeros[0:3]

Resultado: 111, 222, 333

 

En este caso accedemos a la Lista «Numeros» que creamos anteriormente y mostramos del indice «0» al «3». Donde el primer numero entre corchetes marca el comienzo y el segundo (luego de los dos puntos (:)) el final. Si ahora cambiamos el numero del inicio (cero) por el (uno) comenzará a mostrar desde el índice 1. Veámoslo

Numeros [1:3]

Resultado: 222, 333

También a la hora de mostrar una Lista o Tupla en python podemos indicarle que nos la muestre completa excepto los últimos elementos de ella.. Indicando como final un número negativo, por ejemplo:

 

Numeros[:-2]
Resultado: 111, 222, 333

En este caso le pedimos que nos muestre toda la lista completa porque no colocamos un número de inicio que iría delante de los « : » y como final colocamos un número negativo. Entonces comprende que debe comenzar por el principio de esta pero evitar los últimos dos índices.

 

 

 


 

Métodos de listas en Python (modificarlas)

Añadir ok!

Vamos a ver como añadir o quitar elementos mediante los métodos append, insert, remove!! Porque por supuesto puedes añadir todos los elementos que quieras en el código fuente. Pero en este caso vamos a agregar código para que cambie mientras nuestro programa se ejecuta.

Vamos a comenzar!! Supongamos que luego de crear una lista queremos imprimirla y luego modificar elementos con una instrucción para volver a imprimirla ¿Como lo hacemos?

 

Método Append e Insert (Añadir Elementos)

He pero espera, antes de todo debemos comprender que es un método!!

Guiándonos por la definición de método que da la Wikipedia podemos llegar a la siguiente conclusión:

Un método puede ser una serie de sentencias para llevar a cabo una acción, pero en este caso podemos ver al método como el pedido a un objeto para que realice una tarea o en este caso un cambio!

Ya sabiendo esto mi colega es hora de ir a la práctica :D!


Append (Que se traduce Adjuntar en español)

Sirve para agregar un elemento al final de una lista en python, es muy sencillo utilizarlo, solo se coloca el nombre de ella que vamos a modificar seguido de un punto, el método (append en este caso) y luego entre paréntesis el elemento a agregar….

Queremos agregar el nombre «Alex» a la lista y como no nos importa el orden de los elementos utilizamos el método append que lo ubicara a lo último. Vamos a imprimirla completa antes y después.

List1 = ['Marcos', 'Roberto', 'Celeste', 'Margarita']
print (List1)

Lista1.append ('Alex')

print (List1)

Resultado del 1er print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’]

Resultado del 2do print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’, ‘Alex’]

Recuerda: el código tiene un orden descendente de ejecución por lo que primero debe ser creada antes de agregar un elemento!! Si el elemento es texto debe llevar comillas, no así en caso de valores numéricos.

Pero como mencionamos anteriormente el método Append solo nos permite agregar un elemento al final de la lista. ¿Y si yo quiero agregar mas de uno?. Vamos a eso!!


Método Extend (Que se traduce Ampliar en español)

Es útil para agregar varios elementos de un iterable al final de una lista o también añadir una nueva lista en python. Usando el método extend nos permite extenderla, veamos el ejemplo:

List1 = ['Marcos', 'Roberto', 'Celeste', 'Margarita']
print (List1)

List1.extend('JOSE')

print (List1)

Resultado del 1er print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’]

Resultado del 2do print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’, ‘J’, ‘O’, ‘S’, ‘E’]

 

Agregando otra lista a una lista:

Lista1 = [1, 2, 3]
Lista2 = [4, 5, 6]
Lista11.extend(Lista2) #Añadimos la lista2 como extensión de Lista1
print (Lista1)

 

Haa vale! ¿pero si yo quiero agregar un elemento en otra parte de la lista que no sea el final?

Fácil, usamos el método Insert:


Método Insert (Que se traduce Insertar en español)

Para añadir un elemento en otra parte podemos usar el método insert al igual que lo hicimos anteriormente: Primero indicamos el nombre de ella y seguido de un punto el método (Insert en este caso) y luego entre paréntesis indicamos el índice y seguido de una coma el elemento. Así:

List1 = ['Marcos', 'Roberto', 'Celeste', 'Margarita']
print (List1)

List1.insert (1, 'Alex')

print (List1)

Resultado del 1er print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’]

Resultado del 2do print: [‘Marcos’, ‘Alex’, ‘Roberto’, ‘Celeste’, ‘Margarita’]

Como podemos ver nuestro elemento «Alex» se añadió en el índice uno tal cual lo indicamos y le asignó otro índice a los siguientes.


Métodos para eliminar elementos de una listaQuitar elementos de listas en python

 

Es hora de eliminar algunos nombres que no me agradan de esta lista! Simplemente les llegó la hora 8)

Se nos permite eliminar mediante el número de índice y también por valores.. Veamos:


Método Pop (Que se traduce al español como pequeña explosión  ^^)

Al igual que los demás solo debemos ingresar el nombre, seguido del punto y el nombre del método (pop) y entonces entre paréntesis indicamos el índice del elemento a eliminar.

List1 = ['Marcos', 'Roberto', 'Celeste', 'Margarita']
print (List1)

List1.pop (1)

print (List1)

Resultado del 1er print: [‘Marcos’, ‘Roberto’, ‘Celeste’, ‘Margarita’]

Resultado del 2do print: [‘Marcos’, ‘Celeste’, ‘Margarita’]

En este caso explotara (elimina) a Roberto que es el índice uno como le indicamos entre los paréntesis! Ahí tienes Roberto de los co.jones!

Si al método pop no le indicamos índice nos eliminará el último elemento de nuestra lista!


Método Remove (Que se traduce como remover)

El método Remove nos va a servir para eliminar un elemento de listas en python llamándolo por su valor, o por su índice, aunque a veces teniendo una larga sería molesto ponerse a contar palabras!! Así que vamos a ello, vamos a deshacernos de ese tal «Marcos» que está molestando allí.

print (List1) #en este caso continuamos con la lista como había quedado antes

List1.remove ('Marcos')

print (List1)

Resultado del 1er print: [‘Marcos’, ‘Celeste’, ‘Margarita’]

Resultado del 2do print: [ ‘Celeste’, ‘Margarita’]

Ahora si! Conociendo los métodos de listas y tuplas en python podemos modificarlas según sea necesario añadir o quitar elementos!

Veamos ahora otro tipo de dato estructurado similar a las listas y tuplas pero con particularidades que aunque diferentes, muy útiles también en Python.

 

 


El tipo Range

Si has leído algún poco sobre python o tienes alguna idea mínima de lo que es range prepárate porque tal vez al igual que yo hayas metido la pata creyendo que range() es una función predefinida de Python. Pues lo era, si. Pero ya no mas!. A partir de Python 3, que justamente es con el que trabajamos aquí Range es un Tipo de Dato Estructurado y no una función. Así que dentro de este tipo de datos  sobre los que puedes leer aquí en el blog range se ubica a mi forma de verlo, como un concepto que debe aprenderse casi al apar de las listas y tuplas.

Es de fácil confusión pues range() lo que hace básicamente es crear un rango de valores según tu le especifiques como argumento desde donde comienza a seleccionar, hasta a donde y con qué intervalos como si fuera una función creando así una sucesión aritmética consecutiva como si fuera una lista inmutable que puede imprimirse, guardarse, o solo utilizarse luego de ser creada.

Imagina que al utilizar range se crea en un espacio invisible a tus ojos de memoria una lista de números que no es mutable, puesto que aún no existe (es abstracta digamos). Esta en un espacio de memoria pero sin escribirse, como una idea. No puede modificarse si no es al momento de la creación, o luego de ordenarle al intérprete almacenarla en una variable.

Veamos su sintaxis primeramente y luego pasaremos a explicar mas o menos su funcionamiento y uso práctico. range y xrange facilitara mucho las cosas en un futuro y ya veras porque.

Sintaxis de Range()

 

Pues la sintaxis es realmente sencilla fíjate:

range(n)

Donde «n» que esta entre paréntesis como un argumento sera el numero hasta el cual se crea la sucesión de valores terminando en «n-1». Es decir que terminará antes del número que especificaste, no incluyéndolo.

Este ejemplo anterior creará la sucesión de números 1, 2, 3, 4. Pero si haces lo que ya deberías haber hecho de ejecutar esta orden en el intérprete de Python, veras que nada sucede.

Venga aquí te dejo un intérprete de python en línea donde puedes probarlo si tu no lo tienes instalado en tu pc. Del lado izquierdo escribes las líneas y le das a Run. O bien, escribes directamente en el intérprete de la derecha; como a ti te sea mas cómodo.

Intérprete de Python online

Una vez que ejecutes range(5) no notaras nada, pero si sucede algo: se almaceno una sucesion de numeros como tú ordenaste en la memoria. Pero aún es invisible porque no existe, para poder apreciarla primero debemos convertirla en una lista. Y para esto utilizamos una función, que probablemente si estás aprendiendo recién listas y tuplas no hayas visto, pero por ahora solo utilizala y ya luego te tomas el tiempo de aprenderla bien. Es la función list(). Entonces podemos ordenarle al intérprete lo siguiente:

x = list(range(5))

# x será una variable - > List() la función que convierta a range(5) en una lista.

#Por ende, podemos decir que la sucesión creada por range se almacenará en una lista
#que será la variable x
# Una vez hecho esto solo nos queda imprimir x para comprobar si la lista se creó.

print (x)

Resultado:

[0, 1, 2, 3, 4]

Lo que hicimos fue indicarle al intérprete en la variable «x» quiero que almacenes una lista creada a partir de un rango de 5.

  • Pero, si en vez de una lista del 0 al 5 queremos una del 2 al 20, pero saltandonos los números impares?
  • Pues huevón que tu lo complicas todo!Range

Venga, que si recien comienzas es difícil, aburrido, un rompedero de cabeza, pero una vez que aprendes y comienzas a programar ya no podrás pararlo.

Recuerdas que dijimos que range acepta mas argumentos, pues especificamente acepta 3. El número inicial a partir de cual comienza a contar, el número de paso, es decir, el que indica si debe saltar o no valores, y el final que indica hasta dónde llega este rango.

Los llamaremos I (inicio), F (final),  S (salto) .

Teniendo entonces que nuestra lista debía ser desde el 2 al 20 saltando los impares lo hacemos así:

x = list(range(2, 20, 2))

# x será una variable - > List() la función que convierta a range() en una lista.

# En range indicamos I = 2
# En range indicamos F = 20
# En range indicamos S = 2

#Inicia del 2 al final 20, saltando de 2 en 2.
#Imprimimos la lista x
print (x)

Resultado:

[2, 4, 6, 8, 10, 12, 14, 16, 18]

Estos I, F, S solo son un nombre que les di para facilitarte las cosas. El primer argumento de range sera el numero inicial, el segundo el final y el tercero el salto. Si solo colocas un argumento será tomado como el final y partirá a contar desde cero hacia adelante. Y hacia atrás si es un número negativo, por ejemplo range(-5).

Pero volviendo al ejemplo anterior, ahora podemos editar esta sucesion de valores porque ya la hemos convertido en una lista y almacenado en x. Fijate:

x = list(range(2, 20, 2))

# x será una variable - > List() la función que convierta a range() en una lista.

# En range indicamos I = 2
# En range indicamos F = 20
# En range indicamos S = 2

#Inicia del 2 al final 20, saltando de 2 en 2.
#Imprimimos la lista x
print (x)
x.insert(0,1)
#Añadimos el elemento 1 al indice 0.
print (x)
#Volvemos a imprimir nuestra lista x, ya modificada.

Resultado:

[2, 4, 6, 8, 10, 12, 14, 16, 18]
[1, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Podemos hacer muchísimas cosas con range y funciones como contar letras de palabras con solo unas pocas líneas de código, enumerar elementos, etc. Pero eso lo dejaremos, para mas adelante. Por ahora, si has realizado esto tienes los conceptos mas que básicos incorporados!

 

Adiooos!Esta entrada se ha hecho un poquito larga, pero completísima!! Espero hayas aprendido y resuelto tus dudas! Nos vemos en la siguiente!

 

 

 

 


 

Sigue leyendo!
Entrada anterior! Siguiente entrada!

Compartir es agradecer! :)

10 comentarios en “Listas, Tuplas y Range en Python 3: Similitudes y diferencias.”

  1. Hola buenas tardes y feliz año nuevo !!
    Te hago una consulta del método Remove :
    Recien practicando ese metodo me surgio la duda , como sabe la maquina que «Marcos» sacar si vos en tu lista tenes 2 o mas «Marcos» escritos iguales?
    Yo intente y me saco el primer «Marcos» que me aparecia en la lista .
    Ya se que la respuesta es , no podes tener dos nombres iguales jaja pero bueno por las dudas consulto .
    Desde ya muchas gracias
    Saludos

    1. Hola @alex el mismo error te está diciendo «las tuplas no tienen atributo append». Porque este es un atributo de las listas.
      Fíjate que el objeto o variable en el que usas el método append sea una lista y no una tupla.

  2. Hola, estoy encantado con tu forma de explicar
    No entiendo porque al agregar una cadena con Extend, la parte letra por letra, pero los otros métodos la agregan bien

  3. Hola
    Muchas gracias por sus enseñanzas
    Tengo una duda
    ¿Por qué x = list(range(2, 20, 2)) no aparece el valor 20 ?
    Gracias por su amable atención

  4. estoy teniendo este error:
    >>> list(range(5))
    Traceback (most recent call last):
    File «», line 1, in
    TypeError: ‘list’ object is not callable
    >>>

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.