2017-02-07 33 views
0

我有一個函數,其輸入是一個向量,我想存儲所有傳遞函數並具有特定輸出(True或False)的向量。Python 3.5:如何聲明一組空向量?

我很難找出存儲所有矢量的位置。

編輯:我的意思是數組,對不起,我有點小菜。

我的功能是

def true_set(u=[i,j,k,h,n]) 

然後計算基於元素的東西,並返回true或false。 該函數是一個使用變量i,j,k,h,n的表達式。

哦,我與嵌套運行這個for循環,因爲我不知道有更好的方式:

def generate_set(): for i in [0,1,100]: 
    for j in [0,1,100]: 
     for k in [0,1,100]: 
      for h in [1,10,10]: 
       for n in [0.5,10,10]: 
        u=[i,j,k,h,n] 
        if true_set(u)==True: 
+1

請顯示一些代碼。 Python沒有內置的矢量類型。 –

+0

你的意思是一個'list',對吧?或者,一般來說,一個可變的集合?如果是這樣,'集合'不會做,因爲你不能存儲可變對象。使用「矢量」的「矢量」。 –

+0

@ JimFasarakis-Hilliard如果我這樣做,那麼我不必指定矢量存儲到的元素?這對我來說是個問題。 – Antecedent

回答

0

基本上,你正在做的兩種常見的操作

  1. 建設爲若干組合,根據在一些迭代中。
  2. 基於真實性測試過濾這些組合。

Python有這兩種工具。

itertools庫有大量用於生成事物組合的實用程序。

i_list = [0, 1, 100] 
j_list = [0, 1, 100] 
h_list = [1, 10, 10] 
n_list = [.5, 10, 10] 

from itertools import product 
vectors = [v for v in product(i_list, j_list, h_list, n_list)] 

您還可以過濾基於關閉功能

vectors = [v for v in product(i_list, j_list, h_list, n_list) if true_test(v)] 

或者一個功能更強大的方式

vectors = filter(true_test, product(i_list, j_list, h_list, n_list)) 

在這種情況下,true_test看起來像

def true_test(vector): 
    if vector[0] > 1: 
     return True 
    return False 

或wh atever你正在使用的其他測試來決定是否包含給定的矢量或不。