Chr*_*ley 4 python loops boolean python-3.x
有没有一种简单的方法可以通过所有可能的真/假组合来循环变量?例如,假设我们有一个函数:
def f(a, b, c):
return not (a and (b or c))
Run Code Online (Sandbox Code Playgroud)
有没有办法循环a,b,c, 000, 001, 010,011等100?
我的第一个想法是循环遍历整数并获取与变量位置相对应的位,如下所示:
for i in range (8):
a = i & 4
b = i & 2
c = i & 1
print(f(a,b,c), " ", a,b,c)
Run Code Online (Sandbox Code Playgroud)
它似乎可以工作,但是a、b、 和c打印出来时都是整数,并且整数与逻辑运算符的交互方式与布尔值不同。例如,4 and 2等于2和9 or 3等于9。我不太介意,只是花了一些时间来说服自己这并不重要。
但问题仍然存在,是否有更简单的方法来循环所有可能的 true/false 或 0/1 值?
使用itertools.product:
from itertools import product
for a, b, c in product([True, False], repeat=3):
print(f(a,b,c), " ", a,b,c)
Run Code Online (Sandbox Code Playgroud)
如果你确实想要整数 1 和 0,只需替换[True, False]为[1, 0]。这里没有理由将整数视为位数组。
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |