itertools es un módulo en Python que tiene una colección de funciones que se utilizan para manejar iteradores. Hacen que iterar a través de iterables como listas y strings sea muy fácil. Una de esas funciones de itertools es takewhile()
.
Nota: Para obtener más información, consulte Python Itertools
toma mientras()
Esto permite considerar un elemento desde iterable hasta que el predicado especificado se vuelve falso por primera vez. El iterable es una lista o string en la mayoría de los casos. Como sugiere el nombre, «toma» el elemento de la secuencia «mientras» el predicado es «verdadero» . Esta función se incluye en la categoría «terminar iteradores» . La salida no se puede usar directamente y debe convertirse a otra forma iterable. En su mayoría se convierten en listas.
Sintaxis:
takewhile(predicate, iterable)
Es predicate
una función integrada o una función definida por el usuario. Puede ser incluso funciones lambda.
La implementación general de esta función utilizando if-else simple se muestra a continuación.
def takewhile(predicate, iterable): for i in iterable: if predicate(i): return(i) else: break
La función takewhile()
toma un predicado y un iterable como argumentos. El iterable se itera para verificar cada uno de sus elementos. Si los elementos del predicado especificado se evalúan como verdaderos, se devuelven. De lo contrario, el ciclo se termina.
Ejemplo 1: Listas y takewhile()
Considere una lista de enteros. Solo necesitamos los números pares en la salida. Mire el código a continuación para ver qué sucede si usamos takewhile()
.
from itertools import takewhile # function to check whether # number is even def even_nos(x): return(x % 2 == 0) # iterable (list) li =[0, 2, 4, 8, 22, 34, 6, 67] # output list new_li = list(takewhile(even_nos, li)) print(new_li)
[0, 2, 4, 8, 22, 34, 6]
Ejemplo 2: strings y takewhile()
Considere una string alfanumérica. Ahora necesitamos tomar los elementos siempre que sean dígitos.
from itertools import takewhile # function to test the elements def test_func(x): print("Testing:", x) return(x.isdigit()) # using takewhile with for-loop for i in takewhile(test_func, "11234erdg456"): print("Output :", i) print()
Producción:
Testing: 1 Output : 1 Testing: 1 Output : 1 Testing: 2 Output : 2 Testing: 3 Output : 3 Testing: 4 Output : 4 Testing: e
El iterable también se puede pasar directamente. No es obligatorio que estén asignados a alguna variable antes de pasarlos a takewhile()
función.
Ejemplo 3: funciones lambda en takewhile()
Considere los elementos de la string de entrada hasta que se encuentre una ‘s’.
from itertools import takewhile # input string st ="GeeksforGeeks" # consider elements until # 's' is encountered li = list(takewhile(lambda x:x !='s', st)) print(li)
Producción:
['G', 'e', 'e', 'k']
Ejemplo 4:
Haz una lista de alfabetos en orden aleatorio y considera los elementos hasta que encuentres ‘e’ o ‘i’ o ‘u’.
import random from itertools import takewhile # generating alphabets in random order li = random.sample(range(97, 123), 26) li = list(map(chr, li)) print("The original list list is :") print(li) # consider the element until # 'e' or 'i' or 'o' is encountered new_li = list(takewhile(lambda x:x not in ['e', 'i', 'o'], li)) print("\nThe new list is :") print(new_li)
La lista original es:
[‘v’, ‘u’, ‘k’, ‘j’, ‘r’, ‘q’, ‘n’, ‘y’, ‘a’, ‘x’, ‘i’ , ‘p’, ‘e’, ’w’, ‘b’, ‘t’, ‘s’, ‘l’, ‘z’, ‘m’, ‘f’, ‘c’, ‘g’, ‘ d’, ‘o’, ‘h’]La nueva lista es:
[‘v’, ‘u’, ‘k’, ‘j’, ‘r’, ‘q’, ‘n’, ‘y’, ‘a’, ‘x’]
Publicación traducida automáticamente
Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA