📜  Python|获取二进制列表中 True 值的索引

📅  最后修改于: 2022-05-13 01:55:11.744000             🧑  作者: Mango

Python|获取二进制列表中 True 值的索引

开发人员经常使用布尔列表在散列期间检查 True 值。布尔列表也用于动态编程中的某些动态编程范式。让我们讨论在Python中获取列表中真值索引的某些方法。

方法 #1:使用enumerate()和列表理解

enumerate()可以用它的值来完成索引的哈希任务,再加上列表理解可以让我们检查真实值。

# Python3 code to demonstrate 
# to return true value indices.
# using enumerate() + list comprehension
  
# initializing list 
test_list = [True, False, True, False, True, True, False]
  
# printing original list 
print ("The original list is : " +  str(test_list))
  
# using enumerate() + list comprehension
# to return true indices.
res = [i for i, val in enumerate(test_list) if val]
  
# printing result
print ("The list indices having True values are : " +  str(res))
输出:
The original list is : [True, False, True, False, True, True, False]
The list indices having True values are : [0, 2, 4, 5]


方法 #2:使用lambda + filter() + range()

与 lambda 结合的filter()函数可以在 range函数的帮助下执行此任务。 range()函数用于遍历整个列表并过滤检查真值。

# Python3 code to demonstrate 
# to return true value indices.
# using lambda + filter() + range()
  
# initializing list 
test_list = [True, False, True, False, True, True, False]
  
# printing original list 
print ("The original list is : " +  str(test_list))
  
# using lambda + filter() + range()
# to return true indices.
res = list(filter(lambda i: test_list[i], range(len(test_list))))
  
# printing result
print ("The list indices having True values are : " +  str(res))
输出:
The original list is : [True, False, True, False, True, True, False]
The list indices having True values are :  [0, 2, 4, 5]


方法#3:使用itertools.compress()

compress函数检查列表中的所有元素并返回具有 True 值的索引列表。这是执行此特定任务的最 Pythonic 和优雅的方式。

# Python3 code to demonstrate 
# to return true value indices.
# using itertools.compress()
from itertools import compress
  
# initializing list 
test_list = [True, False, True, False, True, True, False]
  
# printing original list 
print ("The original list is : " +  str(test_list))
  
# using itertools.compress()
# to return true indices.
res = list(compress(range(len(test_list)), test_list))
  
# printing result
print ("The list indices having True values are : " +  str(res))
输出:
The original list is : [True, False, True, False, True, True, False]
The list indices having True values are : [0, 2, 4, 5]