給定一個隨機串列長度,我怎樣才能有效地獲得所有可能的布林值序列,除了全部為True或全部為False的字串?
例如,給定數字 3,它應該回傳如下內容。
[True, False, False],
[True, True, False],
[True, False, True],
[False, True, False],
[False, True, True],
[False, False, True],
是否已經有一個已知的功能可以做到這一點?
它回傳序列的順序并不重要。我主要只需要給定串列長度可能有多少個序列。
uj5u.com熱心網友回復:
這主要是一個數學問題,除非您需要序列本身。如果你這樣做了,有一個簡潔的 python 解決方案:
from itertools import product
[seq for seq in product((True, False), repeat=3)][1:-1]
串列推導將包含所有可能的序列,但我們不想要(True, True, True)and (False, False, False)。方便的是,它們分別是第一個和最后一個元素,所以我們可以簡單地丟棄它們,使用從1到-1的切片。
對于不同長度的序列,只需更改函式的“ repeat ”可選引數itertools.product。
uj5u.com熱心網友回復:
您不需要函式來確定這一點。簡單的數學就可以解決問題。
2**n - 2
2 because there are only two options (True/False)
n is your list length
-2 because you want to exclude the all True and all False results
uj5u.com熱心網友回復:
這更像是一個數學問題,但這里有:
總期權數等于每個倉位期權數的乘積,因此,如果您收到 3 作為輸入:
index[0] could be true or false - 2
index[1] could be true or false - 2
index[2] could be true or false - 2
index has a total of 6 options.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448620.html
標籤:Python python-3.x 二叉树
上一篇:再次回圈問題
