我有一段代码要在其中创建一个交换机。我想返回所有开关的列表。这里“on”等于True
,“off”等于False
。现在我只想返回所有True
值及其位置的列表。这是我仅有的,但它只返回第一次出现True
的位置(这只是我代码的一部分):
self.states = [False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False]
def which_switch(self):
x = [self.states.index(i) for i in self.states if i == True]
这只返回“4”
如果您有numpy可用:
使用
enumerate
,list.index
返回找到的第一个匹配项的索引。对于大型列表,最好使用
itertools.compress
:更有效的方法是使用
np.where
。请参阅下面的详细比较,可以看出np.where
的性能优于itertools.compress
和list comprehension
。下面我比较了接受答案(@Ashwini Chaudhary)和使用
numpy.where
提出的解决方案。还要注意,在Python3中,不推荐使用xrange(),即xrange()从Python3.x中删除list comprehension
itertools.compress
numpy.where
相关问题 更多 >
编程相关推荐