【问题标题】:Python 3.5: How to declare an empty set of vectors?Python 3.5:如何声明一组空向量?
【发布时间】:2017-06-25 09:42:00
【问题描述】:

我有一个函数,其输入是一个向量,我想存储所有通过函数并具有特定输出(真或假)的向量。

但我无法确定在哪里存储所有向量。

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

我的功能是

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

然后它根据元素计算一些东西并返回真或假。 该函数是一个使用变量 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:

【问题讨论】:

  • 请显示一些代码。 Python 没有内置的向量类型。
  • 你的意思是list,对吧?或者,一般来说,一个可变集合?如果是这样,sets 将不会这样做,因为您无法在其中存储可变对象。使用“向量”中的“向量”。
  • @JimFasarakis-Hilliard 如果我这样做了,那么我不必指定向量被存储到的元素吗?这对我来说是个问题。
  • 你说的是列表,不是向量,不是数组。而且函数没有变量声明的概念,学究气的意思是initialize。

标签: python function syntax


【解决方案1】:

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

  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

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

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多