Acceder a Elementos de una Lista en Python
Aprende a acceder a elementos de listas en Python usando índices positivos y negativos, slicing con paso, listas anidadas y el método index() con ejemplos claros.
Una lista de Python es una secuencia ordenada y mutable que puede contener elementos de cualquier tipo. Dado que las listas están ordenadas, cada elemento tiene una posición numérica fija — llamada índice — que puedes usar para leer, actualizar o dividir los datos.
Este capítulo cubre:
- Índices positivos y negativos
- Slicing (inicio, fin, paso)
- Comprobar pertenencia con
in - Encontrar posiciones con
index() - Acceder a elementos en listas anidadas
Para modificar listas, consulta Cambiar Elementos de Lista, Agregar Elementos de Lista y Eliminar Elementos de Lista.
Índices Positivos
Python utiliza índices basados en cero: el primer elemento está en el índice 0, el segundo en el índice 1, y así sucesivamente.
Index: 0 1 2 3 4
↓ ↓ ↓ ↓ ↓
fruits = ["apple","banana","cherry","durian","elderberry"]Usa corchetes [] para recuperar un elemento por su índice:
Solicitar un índice que no existe genera un IndexError:
fruits = ["apple", "banana", "cherry"]
print(fruits[10]) # IndexError: list index out of rangeSiempre verifica len(list) - 1 para encontrar el límite superior válido, o usa un bloque try/except cuando la longitud sea incierta.
Índices Negativos
Los índices negativos cuentan hacia atrás desde el final de la lista. El índice -1 es el último elemento, -2 es el penúltimo, y así sucesivamente.
Index: -5 -4 -3 -2 -1
↓ ↓ ↓ ↓ ↓
fruits = ["apple","banana","cherry","durian","elderberry"]Los índices negativos son especialmente útiles cuando necesitas el último elemento de una lista cuya longitud se desconoce.
Slicing de Listas
Un slice extrae una sublista usando la sintaxis list[start:stop]. El índice start está incluido; el índice stop está excluido.
El slicing nunca genera un IndexError — Python ajusta automáticamente los límites fuera de rango:
fruits = ["apple", "banana", "cherry"]
print(fruits[1:100]) # ['banana', 'cherry'] — no errorSlicing con Paso
Un tercer parámetro — el paso — controla cuántos elementos saltar entre cada selección: list[start:stop:step].
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[0:9:2]) # [0, 2, 4, 6, 8] — every second item
print(numbers[::3]) # [0, 3, 6, 9] — every third item
print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] — reversedUn paso negativo invierte la dirección, por lo que list[::-1] es la forma idiomática de invertir una lista sin modificarla en su lugar.
Slicing con Índices Negativos
Los índices negativos también funcionan en slices:
fruits = ["apple", "banana", "cherry", "durian", "elderberry"]
print(fruits[-3:]) # ['cherry', 'durian', 'elderberry'] — last 3
print(fruits[-4:-1]) # ['banana', 'cherry', 'durian']Comprobar si un Elemento Existe
Usa el operador in para verificar la pertenencia sin conocer el índice:
fruits = ["apple", "banana", "cherry", "durian", "elderberry"]
print("banana" in fruits) # True
print("mango" in fruits) # False
print("mango" not in fruits) # TrueEsto es más limpio que iterar manualmente y es el patrón preferido para comprobaciones de existencia.
Encontrar el Índice de un Elemento
El método index() devuelve la posición de la primera ocurrencia de un valor:
fruits = ["apple", "banana", "cherry", "banana", "elderberry"]
print(fruits.index("banana")) # 1 — first occurrence
print(fruits.index("elderberry")) # 4index() genera un ValueError si el valor no se encuentra. Protégelo con in primero:
fruits = ["apple", "banana", "cherry"]
target = "mango"
if target in fruits:
print(fruits.index(target))
else:
print(f"{target!r} is not in the list")También puedes limitar la búsqueda a un rango usando index(value, start, stop):
fruits = ["apple", "banana", "cherry", "banana", "elderberry"]
# Find 'banana' starting from index 2 (skips the first occurrence)
print(fruits.index("banana", 2)) # 3Acceder a Elementos en Listas Anidadas
Una lista puede contener otras listas como elementos. Accede a los elementos anidados encadenando corchetes de índice:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
print(matrix[0]) # [1, 2, 3] — first row
print(matrix[1][2]) # 6 — row 1, column 2
print(matrix[-1][-1]) # 9 — last row, last columnLa misma sintaxis de slicing se aplica a las listas anidadas:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[0][1:]) # [2, 3]Referencia Rápida
| Sintaxis | Descripción |
|---|---|
lst[i] | Elemento en el índice i (basado en 0) |
lst[-i] | Elemento i posiciones desde el final |
lst[a:b] | Slice de a (inclusive) a b (exclusive) |
lst[a:b:s] | Slice con paso s |
lst[::-1] | Copia invertida de la lista |
x in lst | True si x está presente |
lst.index(x) | Primer índice de x |
Capítulos Relacionados
- Listas de Python — creación, propiedades y descripción general de listas
- Cambiar Elementos de Lista — actualizar valores por índice
- Agregar Elementos de Lista —
append(),insert(),extend() - Eliminar Elementos de Lista —
remove(),pop(),del - Recorrer Listas — iterar sobre cada elemento
- Métodos de Lista — referencia completa de métodos
- Comprensión de Listas — construcción concisa de listas