Función iter() de Python
Funciones integradas de Python3
iter()Es una función integrada de Python que se utiliza para convertir objetos iterables en iteradores.
El iterador es un concepto muy importante en Python,iter()Se pueden crear iteradores a partir de cualquier objeto iterable, lo que permite usarnext()la función para acceder a los elementos uno por uno.
Definición de términos: iter 是 iterator(迭代器)的缩写。
Sintaxis básica y parámetros
Formato de sintaxis
iter(object) iter(object, sentinel)
Descripción de parámetros
- Parámetro object:
- Tipo: objeto iterable
- Descripción: el objeto que se convertirá en iterador.
- Parámetro sentinel(Opcional):
- Tipo: cualquier valor
- Descripción: valor centinela, cuando se itera hasta este valor, se detiene la iteración.
Descripción de la función
- Valor de retorno: Devuelve un objeto iterador.
- CaracterísticasEl iterador solo puede recorrer hacia adelante, no puede retroceder.
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
# Crear un iterador desde una lista
my_list = [1, 2, 3]
iterator = iter(my_list)
# Usar next() para obtener elementos
print(next(iterator)) # Salida: 1
print(next(iterator)) # Salida: 2
print(next(iterator)) # Salida: 3
# Llamarlo de nuevo lanzará StopIteration
# print(next(iterator))
# También se puede recorrer con un bucle for
my_list = [1, 2, 3]
for item in iter(my_list):
print(item, end=" ")
# Salida: 1 2 3
my_list = [1, 2, 3]
iterator = iter(my_list)
# Usar next() para obtener elementos
print(next(iterator)) # Salida: 1
print(next(iterator)) # Salida: 2
print(next(iterator)) # Salida: 3
# Llamarlo de nuevo lanzará StopIteration
# print(next(iterator))
# También se puede recorrer con un bucle for
my_list = [1, 2, 3]
for item in iter(my_list):
print(item, end=" ")
# Salida: 1 2 3
Resultado esperado de la ejecución:
1 2 3 1 2 3
Análisis del código:
iter()Convierte el objeto iterable en un iterador.- El iterador solo se puede recorrer una vez; una vez agotado, debe crearse de nuevo.
Ejemplo 2: Crear a partir de cadenas y tuplas
Ejemplo
# Iterador de cadena
s = "hello"
iterator = iter(s)
print(next(iterator)) # Salida: h
print(next(iterator)) # Salida: e
print(next(iterator)) # Salida: l
# Iterador de tupla
t = (1, 2, 3)
iterator = iter(t)
print(next(iterator)) # Salida: 1
print(next(iterator)) # Salida: 2
s = "hello"
iterator = iter(s)
print(next(iterator)) # Salida: h
print(next(iterator)) # Salida: e
print(next(iterator)) # Salida: l
# Iterador de tupla
t = (1, 2, 3)
iterator = iter(t)
print(next(iterator)) # Salida: 1
print(next(iterator)) # Salida: 2
Resultado esperado de la ejecución:
h e l 1 2
Análisis del código:
- El iterador de cadena devuelve un carácter cada vez.
- El iterador de tupla devuelve un elemento cada vez.
Ejemplo 3: Usar el parámetro sentinel
Ejemplo
# Crear un iterador personalizado usando sentinel
def fibonacci():
n = 0
while True:
yield n
n += 1
if n > 10:
raise StopIteration
# Usar sentinel (detenerse cuando se lea un cierto valor)
class ReadUntil:
def __init__(self, data, stop_at):
self.data = data
self.stop_at = stop_at
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
if value == self.stop_at:
raise StopIteration
self.index += 1
return value
# Crear un iterador que se detenga al encontrar "END"
data = ["a", "b", "c", "END", "d"]
iterator = iter(lambda: ReadUntil(data, "END"), None)
for item in iterator:
print(item, end=" ")
# Salida: a b c
def fibonacci():
n = 0
while True:
yield n
n += 1
if n > 10:
raise StopIteration
# Usar sentinel (detenerse cuando se lea un cierto valor)
class ReadUntil:
def __init__(self, data, stop_at):
self.data = data
self.stop_at = stop_at
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
if value == self.stop_at:
raise StopIteration
self.index += 1
return value
# Crear un iterador que se detenga al encontrar "END"
data = ["a", "b", "c", "END", "d"]
iterator = iter(lambda: ReadUntil(data, "END"), None)
for item in iterator:
print(item, end=" ")
# Salida: a b c
Resultado esperado de la ejecución:
a b c
El parámetro sentinel se utiliza para crear un comportamiento de iteración personalizado, normalmente se usa junto con callable.
Funciones integradas de Python3
Otras extensiones