2
我有一個包含以下元素的列表:A,B,C,D,E,F,G
。
它們要麼假設爲真或假,因此分別由1
和0
表示。使用Python排列列表
我應該得到一個組合,但以下限制留:
- 元
C
和Fare to be true in all cases, ie,
1`。 - 當元素
A
爲true時,元素E
和G
可能爲false。 - 當元素
B
爲true時,元素D
可能爲false。
我有一個包含以下元素的列表:A,B,C,D,E,F,G
。
它們要麼假設爲真或假,因此分別由1
和0
表示。使用Python排列列表
我應該得到一個組合,但以下限制留:
C
和F are to be true in all cases, ie,
1`。A
爲true時,元素E
和G
可能爲false。B
爲true時,元素D
可能爲false。你想要的不是排列,而是產品。另外,我解釋限制爲:
因此,代碼如下:
import pprint
from itertools import product
def myproduct():
keys = 'abcdefg'
values = [(0, 1) for k in keys]
for value in product(*values):
d = dict(zip(keys, value))
# Skip: C and F that are 0 (False)
if d['c'] == 0 or d['f'] == 0:
continue
# Skip: When A is false, E and G cannot be false
if d['a'] == 0 and (d['e'] == 0 or d['g'] == 0):
continue
# Skip: When B is false, D cannot be false
if d['b'] == 0 and d['d'] == 0:
continue
yield d # This 'permutation' is good
for d in myproduct():
pprint.pprint(d)
輸出:
{'a': 0, 'b': 0, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1}
{'a': 0, 'b': 1, 'c': 1, 'd': 0, 'e': 1, 'f': 1, 'g': 1}
{'a': 0, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1}
{'a': 1, 'b': 0, 'c': 1, 'd': 1, 'e': 0, 'f': 1, 'g': 0}
{'a': 1, 'b': 0, 'c': 1, 'd': 1, 'e': 0, 'f': 1, 'g': 1}
{'a': 1, 'b': 0, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 0}
{'a': 1, 'b': 0, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1}
{'a': 1, 'b': 1, 'c': 1, 'd': 0, 'e': 0, 'f': 1, 'g': 0}
{'a': 1, 'b': 1, 'c': 1, 'd': 0, 'e': 0, 'f': 1, 'g': 1}
{'a': 1, 'b': 1, 'c': 1, 'd': 0, 'e': 1, 'f': 1, 'g': 0}
{'a': 1, 'b': 1, 'c': 1, 'd': 0, 'e': 1, 'f': 1, 'g': 1}
{'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 0, 'f': 1, 'g': 0}
{'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 0, 'f': 1, 'g': 1}
{'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 0}
{'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1}
注:
values
是(0, 1)
列表:
[(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]
每個value
是一個元組7號如:
(1, 1, 1, 0, 0, 1, 0)
d
是一個字典,其中鍵是一個,b,...,值是0 和
_「如果元素A爲真,元素E和G可以是假的」_是否意味着_「E和G可能是假或真」_或_「E和G必須是假的」_? – furas
看起來像另一個*你可以做我的作業*的問題。我可能是錯的(希望如此),在這種情況下,你可以把你到目前爲止嘗試過的嗎?我們可以從那裏幫助你。 –
聽起來像作業。爲了你自己的緣故,請閱讀[這封信](http://meta.programmers.stackexchange.com/questions/6166)。 –