Programa de Python para obtener los índices de valores verdaderos en una lista booleana

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]

Publicación traducida automáticamente

Artículo escrito por Shivam_k 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 *