如何使用递归或其他技术解决以下问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用递归或其他技术解决以下问题相关的知识,希望对你有一定的参考价值。

我有一些n-d矩阵,其中使用索引填充数据。以下是一个示例代码,它将使您了解我要实现的目标。

def sample_function(matrix, matrix2, obj1, obj2):
    for i in range(len(obj1):
        for j in range(len(obj2)):
            for k in range(len(obj3):
                matrix[i][j][k] = matrix2[i][j][k] 

如果我只有2-3个函数参数,这很容易做到,但是如果参数很多,我该怎么做?您可以假设矩阵已经在那里填充了一些值(0)。

答案

这不是递归的,只是利用内置的itertools,它可能对您仍然有用...如果我正确理解了您的问题,那就是:)否则请纠正我]

import numpy  as np
import itertools as it

def other_fun(*args):
    return sum(args)

def sample_fun(mtx, *args):
    for ids in it.product(*[range(len(obj)) for obj in args]):
        mtx[ids] = other_fun(*[obj[idx] for obj,idx in zip(args,ids)])
    return mtx

obj1 = [1,2,3]
obj2 = [4,5,6,7]
obj3 = [8,9]
objects = [obj1, obj2, obj3]

mtx = np.zeros([len(obj) for obj in objects])    
mtx = sample_fun(mtx, *objects)
print(mtx)

以上是关于如何使用递归或其他技术解决以下问题的主要内容,如果未能解决你的问题,请参考以下文章

Python用迭代(yield)和递归解决八皇后问题

如何判断 Web 应用程序是不是是使用 Angular(或其他技术)构建的?

如何解决以下复发?

如何使用重复、while 循环或其他迭代技术编写一个根据某些规则返回输入向量索引的函数

您提的这个问题 C#调用delphi的DLL"尝试读取或写入受保护的内存。这通常指示其他内存已损坏,如何解决的?

ORA-00604: 递归 SQL 级别 1 出现错误和ORA-00942: 表或视图不存在 一起出现怎么解决