Python 3.5:如何声明一组空的向量?

时间:2017-02-07 23:19:14

标签: python function syntax

我有一个函数,其输入是一个向量,我想存储所有传递函数并具有特定输出(True或False)的向量。

我无法确定存储所有载体的位置。

编辑:我的意思是数组,对不起,我有点像菜鸟。

我的功能是

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 个答案:

答案 0 :(得分:0)

你基本上做了两个常见的操作

  1. 根据多个迭代构建多个组合。
  2. 根据真实性测试过滤这些组合。
  3. 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
    

    或者您正在使用的任何其他测试来决定是否包含给定的向量