我有一段代码应该在其中创建总机。我想返回所有打开的开关的列表。这里的“开”等于True
和“关”等于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”
使用enumerate
,list.index
返回找到的第一个匹配项的索引。
>>> t = [False, False, False, False, True, True, False, True, False, False, False, False, False, False, False, False]
>>> [i for i, x in enumerate(t) if x]
[4, 5, 7]
对于庞大的列表,最好使用itertools.compress
:
>>> from itertools import compress
>>> list(compress(xrange(len(t)), t))
[4, 5, 7]
>>> t = t*1000
>>> %timeit [i for i, x in enumerate(t) if x]
100 loops, best of 3: 2.55 ms per loop
>>> %timeit list(compress(xrange(len(t)), t))
1000 loops, best of 3: 696 µs per loop
问题内容: 我有一个布尔值列表: 并且我正在寻找一种方法来计算列表中的数量(因此,在上面的示例中,我希望返回值是。)我已经找到了一些示例,这些示例寻找特定元素的出现次数。因为我正在使用布尔运算,所以有效的方法吗?我在想类似或的东西。 问题答案: 等于。
我发现了这个语法: 这个有两个点的语法是什么:叫? 在哪里可以找到有关它的信息? 它是仅适用于布尔值还是以其他不同的方式实现?
问题内容: 这可能只是白痴,但对我来说有点混乱: 为什么在返回时返回? 问题答案: 您正在根据布尔值的文字值检查它。一样不会是真的。 如果将其投射,您将看到区别: 究其原因是真实的,因为你是比较相同的对象。与或相同。 当您看到类似的东西并且此检查从未通过时,困难就来了。那是因为您正在检查项目的 真实值 。按照惯例,所有这些项目都将通过布尔检查失败- 也就是说,它们的布尔值将为: (明显) 任何空序
问题内容: 好的,我在代码中实现了这个SO问题:随机返回True或False 但是,我的行为很奇怪:我需要同时运行十个实例,每个实例每次运行仅返回一次true或false。令人惊讶的是,无论我做什么,每次我得到 有什么方法可以改善这种方法,以便我至少有大约50%的机会得到吗? 为了使它更易于理解:我将应用程序构建为JAR文件,然后通过批处理命令运行 程序的内容-使其尽可能简单: 如果我打开10个命
问题内容: 我正在寻找最好的方法(快速而优雅)来获取python中的随机布尔值(翻转硬币)。 目前,我正在使用或。 有我不知道的更好的选择吗? 问题答案: 亚当的答案相当快,但是我发现答案要快得多。如果您真的想要布尔值而不是long值,那么 仍然是两倍的速度 两种解决方案都需要 如果最大的速度不是优先考虑的话,那么阅读肯定会更好 在看到@Pavel的答案后添加了此内容
问题内容: 我在Python中有一个布尔列表 我想将其更改为与逻辑相反 的方法吗?在Python中是否有一种内置的方法(类似于call )可以执行此操作,而无需使用手写循环来反转元素? 问题答案: 列表理解很容易: 产量