W3docs

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:

python— editable, runs on the server

Solicitar un índice que no existe genera un IndexError:

fruits = ["apple", "banana", "cherry"]
print(fruits[10])  # IndexError: list index out of range

Siempre 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"]
python— editable, runs on the server

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.

python— editable, runs on the server

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 error

Slicing 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]  — reversed

Un 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) # True

Esto 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")) # 4

index() 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))  # 3

Acceder 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 column

La 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

SintaxisDescripció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 lstTrue si x está presente
lst.index(x)Primer índice de x

Capítulos Relacionados

Práctica

Práctica
¿Cuáles de las siguientes formas se pueden usar para acceder a elementos de una lista en Python?
¿Cuáles de las siguientes formas se pueden usar para acceder a elementos de una lista en Python?
Was this page helpful?