---
title: List en Python, con ejemplos
url: https://jarroba.com/list-python-ejemplos/
author: Richard [Admin Jarroba]
date: 2015-04-06
modified: 2026-10-21
language: es
license: CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) — attribution: "List en Python, con ejemplos", Richard [Admin Jarroba], jarroba.com
categories: Lenguajes de Programación
tags: list, python
repository: https://github.com/jarroba/List_Python_jarroba
---

# List en Python, con ejemplos

> Las listas (‘List’) en Python son un tipo de estructuras de datos que guardan de forma ordenada un conjunto de datos que no tiene por qué ser del mismo tipo.

El proyecto de este post lo puedes descargar pulsando [AQUI](https://github.com/jarroba/List_Python_jarroba).

 

Las listas (o ‘List’) en Python son ***un tipo de estructuras de datos*** muy flexible que guardan de forma ordenada un conjunto de datos que no tiene por qué ser del mismo tipo. En otros lenguajes de programación una lista equivaldría a un array, aunque Python no exige que los elementos de la lista tenga que ser del mismo tipo (‘int’, ‘float’, ‘chr’, ‘str’, ‘bool’, ‘object’).

 

Veamos a continuación un ejemplo de una lista en Python:

 

```py

# Declaramos una lista con diferente tipos de datos
lista = [1, 3.1416, 'j', 'jarroba.com',  True]
```

 

Como vemos la lista la declaramos entre los caracteres '[ ]' y los elementos que hay en esta lista son de diferente tipo. Vamos a continuación a recorrer la lista (con un foreach) y a imprimir los elementos de la misma con el tipo de datos que es cada uno de los elementos:

 

```py

print 'Imprimimos los elementos de una lista y el tipo de dato de cada elemento'
for l in lista:
    print '%s - %s' %(l, type(l))
```

 

Como resultado de este código tenemos lo siguiente:

 

```text

Imprimimos los elementos de una lista, con su tipo de dato y el contenido
1 - <type 'int'>
3.1416 - <type 'float'>
j - <type 'str'>
jarroba.com - <type 'str'>
True - <type 'bool'>
```

 

Como vemos, las listas en Python permiten trabajar con elementos de diferentes tipos de datos, tal y como hemos demostrado.

 

Vamos a pasar ahora a mostrar los métodos (o funciones) para trabajar con las listas en Python, y posteriormente a poner ejemplos del funcionamiento de estos métodos:

 

```py

# Declaración de una lista
lista = list()

# Cuenta el número de elementos de la lista
len(lista)

# Agrega un elemento (x) al final de la lista.
lista.append(x)

# Inserta un elemento (x) en una posición determinada (pos)
lista.insert(pos, x)

# Une dos listas (une la lista2 (la que se pasa como parámetro) a la lista)
lista.extend(lista2)

# Borra el primer elemento de la lista cuyo valor sea x. Sino existe devuelve un error
lista.remove(x)

# Borra el elemento en la posición dada de la lista, y lo devuelve.
lista.pop(pos)

# Borra todos los elementos de la lista (lista.clear())
del lista[:]

# Devuelve el índice en la lista del primer elemento cuyo valor sea x.
lista.index(x)

# Devuelve el número de veces que x aparece en la lista.
lista.count(x)

# Ordena los ítems de la lista
lista.sort(cmp=None, key=None, reverse=False)

# Invierte los elementos de la lista.
lista.reverse()

# Devuelve una copia de la lista (lista.copy())
listaCopia = lista[:]
```

 

Una vez vistos los métodos (o funciones) que nos permiten trabajar con las listas, vamos a mostrar como trabajar con estos métodos. Para ello nos vamos a crear una lista en la que guardaremos las demarcaciones en la que pueden jugar los futbolistas en un partido de fútbol; es decir, que guardaremos elementos de tipo string.

 

Lo primero que hacemos es crearnos una variable de tipo lista (definimos esta variable de forma explícita) que llamaremos ‘demarcaciones’ y añadiremos los elementos con el método «append(x)»:

 

```py

# Ejemplo de lista en la que guardaremos las demarcaciones en el fútbol
demarcaciones = list()

# Insertamos algunas demarcaciones
demarcaciones.append('Defensa')
demarcaciones.append('Lateral')
demarcaciones.append('MedioCentro')
demarcaciones.append('Centro Campista')
demarcaciones.append('Extremo')
print demarcaciones
```

 

Si ejecutamos este fragmento de código, en el que insertamos elementos a la lista y la imprimimos, tenemos lo siguiente:

 

```text

['Defensa', 'Lateral', 'MedioCentro', 'Centro Campista', 'Extremo']
```

 

Una vez que tenemos elementos en nuestra lista, podemos contar los elementos de la siguiente forma:

 

```py

# Vemos cuantos elementos tiene nuestra lista
numElem = len(demarcaciones)
print 'Número de elementos en la lista: %d' %numElem
```

 

Como salida tenemos lo siguiente:

 

```text

Número de elementos en la lista: 5
```

 

La función «len()» no es específica para contar el número de elementos de la lista, sino que vale para contar el número de caracteres de un string, el número de elementos de un diccionario, etc. aunque lo mostramos en este tutorial para que sepáis que el número de elementos de una lista se cuenta con esta función.

 

Pasamos a probar el método "insert(pos,x)" en el que inserta un elemento 'x' en la posición 'pos' de la lista que le indicamos. Veamos un ejemplo:

 

```py

# Insertamos elementos en posiciones determinadas
demarcaciones.insert(0, 'Portero')
demarcaciones.insert(6, 'Delantero')
print demarcaciones
```

 

Como vemos, insertamos los elementos 'Portero' y 'Delantero' en las posiciones 0 y 6 respectivamente en la lista. ***RECORDAR***: *que las listas (como pasa en otros lenguajes de programación) empiezan enumerándose por la posición ‘0’.* Si ejecutamos el fragmento de código anterior, veremos que efectivamente insertamos en la primera y última posición los elementos 'Portero' y 'Delantero'.

 

```text

['Portero', 'Defensa', 'Lateral', 'MedioCentro', 'Centro Campista', 'Extremo', 'Delantero']
```

 

El siguiente método "extend(list)" une los elementos de la lista que se le pasa como parámetro a la lista. Vemos en el siguiente fragmento de código como nos creamos una lista (llamada 'lista2') que uniremos o concatenaremos a la lista demarcaciones de la siguiente manera:

 

```py

# Concatenamos dos listas
lista2 = ['Arquero', 'Carrilero', 'Portero', 'Lateral']
demarcaciones.extend(lista2)
print demarcaciones
```

 

Como resultado de unir estas dos listas tenemos lo siguiente (demarcaciones + lista2):

 

```text

['Portero', 'Defensa', 'Lateral', 'MedioCentro', 'Centro Campista', 'Extremo', 'Delantero', 'Arquero', 'Carrilero', 'Portero', 'Lateral']
```

 

El siguiente método que vamos a probar va a ser «remove(x)» que eliminará el primer elemento ‘x’ que se encuentre en la lista. En el ejemplo que vemos a continuación borraremos el primer elemento que sea ‘Lateral’:

 

```py

# Borramos la primera aparición del elemento 'Lateral' de la lista
demarcaciones.remove('Lateral')
print demarcaciones
```

 

Como resultado tenemos el siguiente contenido, que como vemos ha eliminado la primera aparición de 'Lateral' (que se encontraba en tercer lugar), pero no ha eliminado la segunda aparición de 'Lateral' que se encuentra en la última posición:

 

```text

['Portero', 'Defensa', 'MedioCentro', 'Centro Campista', 'Extremo', 'Delantero', 'Arquero', 'Carrilero', 'Portero', 'Lateral']
```

 

Otro método de borrado es el método "pop(pos)" que elimina el elemento que se encuentra en la posición 'pos' que se pasa como parámetro. Como vemos en el siguiente ejemplo, borraremos el elemento que se encuentra en la tercera posición (el elemento 'MedioCentro'). Dado que las listas empiezan a enumerarse por '0' para borrar el tercer elemento, debemos de pasarle como parámetro un '2':

 

```py

# Borramos en tercer elemento de la lista PD: las lista empiezan en el elemento 0
demarcaciones.pop(2)
print demarcaciones
```

 

Como resultado tenemos que nos ha eliminado la tercera posición; es decir, ha borrado ‘MedioCentro’

 

```text

['Portero', 'Defensa', 'Centro Campista', 'Extremo', 'Delantero', 'Arquero', 'Carrilero', 'Portero', 'Lateral']
```

 

El siguiente método que vamos a ver es el método "index(x)" que nos devolverá la posición del primer elemento 'x' de la lista. Si buscamos el valor 'Extremo' en la lista nos devolverá como resultado '3' (que corresponde a la cuarta posición):

 

```py

# Buscamos la posición del primer elemento con valor = 'Extremo'
print demarcaciones.index('Extremo')
```

 

El método «count(x)» nos va a devolver el número de veces que está el elemento ‘x’ en la lista. A continuación vemos un ejemplo en el que vamos a contar el numero de veces que aparecen los elementos ‘Portero’ y ‘Delantero’ respectivamente:

 

```py

# Vemos el número de veces que esta en la lista el elemento 'Portero' y 'Delantero'
print demarcaciones.count('Portero')
print demarcaciones.count('Delantero')
```

 

Como resultado tenemos que el elemento ‘Portero’ está 2 veces y el elemento ‘Delantero’ está solo una vez:

 

```text

2
1
```

 

Para invertir la lista tenemos el método "reverse()". Veamos un ejemplo de como invertiríamos la lista:

 

```py

# Invertimos los elementos de las lista
demarcaciones.reverse()
print demarcaciones
```

 

Como resultado tenemos la lista invertida:

 

```text

['Lateral', 'Portero', 'Carrilero', 'Arquero', 'Delantero', 'Extremo', 'Centro Campista', 'Defensa', 'Portero']
```

 

Para hacer una copia de una lista, se puede hacer utilizando el método «copy» aunque para ello deberíamos hacer previamente un «import copy». Para hacerlo mucho más sencillo y para no tener que importarnos ninguna librería extra, las copias de una lista las haremos de la siguiente manera:

 

```py

# Hacemos una copia de la lista demarcaciones
copiaDemarcaciones = demarcaciones[:]
print 'Copia %s' %copiaDemarcaciones
```

 

Lo que estamos haciendo es copiar en la variable ‘copiaDemarcaciones’ el contenido de toda la lista ( [ : ] ) ‘demarcaciones’. En este caso y a diferencia de otros lenguajes como Java, no estamos haciendo una referencia a una lista, sino que estamos haciendo una copia de la lista; es decir que si manipulamos la lista ‘copiaDemarcaciones’ (borrado, insert, reverse, …) esta no afectará a la lista ‘demarcaciones’ ya que son copias en memoria y no referencias. Como resultado del fragmento de código anterior (la copia) tenemos lo siguiente:

 

```text

Copia ['Lateral', 'Portero', 'Carrilero', 'Arquero', 'Delantero', 'Extremo', 'Centro Campista', 'Defensa', 'Portero']
```

 

Para borrar todos los elementos de una lista se puede utilizar el método "remove()" aunque es mejor hacer un borrado de la lista de la siguiente forma:

 

```py

# Borramos todos los elementos de la lista 'copiaDemarcaciones'
del copiaDemarcaciones[:]
print copiaDemarcaciones
```

 

En este caso vamos a borrar el contenido de la lista 'copiaDemarcaciones' y vemos que como resultado tenemos una lista sin elementos:

 

```text

[]
```

 

Por último vamos a ver uno de los métodos más interesantes de las lista, que es el método de ordenación «sort()». Abstrayéndonos del algoritmo que utiliza para hacer la ordenación de la lista (quicksort, inserción directa, método de la burbuja, etc.), el método «sort()» permite ordenar la lista en orden (alfabético, numérico, etc.) tanto en un sentido como en otro.

 

Vamos a pasar a poner un ejemplo y a ordenar alfabéticamente la lista. Para ello hacemos lo siguiente:

 

```py

# Ordenamos la lista demarcaciones por orden alfabético
demarcaciones.sort()
print demarcaciones
```

 

Como resultado tenemos la lista ordenada en orden alfabético:

 

```text

['Arquero', 'Carrilero', 'Centro Campista', 'Defensa', 'Delantero', 'Extremo', 'Lateral', 'Portero', 'Portero']
```

 

El método «sort()» permite pasarle una serie de parámetros para la ordenación, ya que si en la lista tuviésemos objetos en vez de datos atómicos, esta la ordenase por algún atributo del objeto. En este tutorial no vamos a entrar en ese detalle y solo vamos a ver como ordenar la lista en sentido inverso pasándole el parámetro ‘reverse = True|False’. Veamos el ejemplo:

 

```py

demarcaciones.sort(reverse=True)
print demarcaciones
```

 

Vemos que como resultado tenemos la lista ordenada en orden alfabético pero en sentido inverso:

 

```text

['Portero', 'Portero', 'Lateral', 'Extremo', 'Delantero', 'Defensa', 'Centro Campista', 'Carrilero', 'Arquero']
```

 

Veamos otro ejemplo de ordenación de listas, pero en este caso con números en vez de con palabras. En el siguiente fragmento de código vamos a ver como se ordenaría la 'listaNumero' tanto de forma ascendente como descendente:

 

```py

print '\n\n*******    Ordenación de listas    ******'
listaNumero = [5,2,9,1,12,6,8,3,4]

print 'Lista Desordenada'
print listaNumero

print 'Lista ordenada de forma ascendente (Aqui da igual pasarle "reverse=False" como parámetro)'
listaNumero.sort(reverse=False)
print listaNumero

print 'Lista ordenada de forma descendente'
listaNumero.sort(reverse=True)
print listaNumero
```

 

Como resultado tenemos lo siguiente:

 

```text

*******    Ordenación de listas    ******
Lista Desordenada
[5, 2, 9, 1, 12, 6, 8, 3, 4]
Lista ordenada de forma ascendente (Aqui da igual pasarle "reverse=False" como parámetro)
[1, 2, 3, 4, 5, 6, 8, 9, 12]
Lista ordenada de forma descendente
[12, 9, 8, 6, 5, 4, 3, 2, 1]
```

 

Para saber más sobre la ordenación de listas en Python, ver el siguiente tutorial: "[Ordenar listas en Python, con ejemplos](https://jarroba.com/ordenar-listas-python-ejemplos/)"
