Python – Itertools.takewhile()

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 predicateuna 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)
Producción:

[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)
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *