Dada una lista de solo valores booleanos, escriba un programa de Python para obtener todos los índices con valores verdaderos de la lista dada.
Veamos ciertas formas de hacer esta tarea.
Método #1: Usar itertools [forma Pythonic]
itertools.compress()
La función comprueba todos los elementos de la lista y devuelve la lista de índices con valores verdaderos.
# Python program to fetch the indices # of true values in a Boolean list from itertools import compress # initializing list bool_list = [False, True, False, True, True, True] # printing given list print ("Given list is : " + str(bool_list)) # using itertools.compress() # to return true indices. res = list(compress(range(len(bool_list )), bool_list )) # printing result print ("Indices having True values are : " + str(res))
Producción:
Given list is : [False, True, False, True, True, True] Indices having True values are : [1, 3, 4, 5]
Método #2: Usando el enumerate()
método
enumerate()
El método codifica el índice con su valor y, junto con la comprensión de la lista, puede permitirnos verificar los valores verdaderos.
# Python program to fetch the indices # of true values in a Boolean list # initializing list bool_list = [False, True, False, True, True, True] # printing given list print ("Given list is : " + str(bool_list)) # using enumerate() + list comprehension # to return true indices. res = [i for i, val in enumerate(bool_list) if val] # printing result print ("Indices having True values are : " + str(res))
Producción:
Given list is : [False, True, False, True, True, True] Indices having True values are : [1, 3, 4, 5]
Método #3: Usando filter()
+range()
# Python program to fetch the indices # of true values in a Boolean list # initializing list bool_list = [False, True, False, True, True, True] # printing given list print ("Given list is : " + str(bool_list)) # using lambda + filter() + range() # to return true indices. res = list(filter(lambda i: bool_list[i], range(len(bool_list)))) # printing result print ("Indices having True values are : " + str(res))
Producción:
Given list is : [False, True, False, True, True, True] Indices having True values are : [1, 3, 4, 5]