有沒有一種簡單的方法可以通過所有可能的真/假組合來回圈變數?例如,假設我們有一個函式:
def f(a, b, c):
return not (a and (b or c))
有沒有辦法回圈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)
它似乎可以作業,但是a,b和c列印出來時都是整數,并且整數與邏輯運算子的互動方式與布林值不同。例如,4 and 2等于2和9 or 3等于9。我不太介意,只是經過一些思考來說服自己這無關緊要。
但問題仍然存在,是否有更簡單的方法來遍歷所有可能的真/假或 0/1 值?
uj5u.com熱心網友回復:
使用itertools.product:
from itertools import product
for a, b, c in product([True, False], repeat=3):
print(f(a,b,c), " ", a,b,c)
如果你真的想要整數 1 和 0,只需替換[True, False]為[1, 0]. 這里幾乎沒有理由將整數視為位陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411436.html
標籤:
上一篇:用于基本資料清理的R回圈
