Python 用于迭代的嵌套for循环

Python 用于迭代的嵌套for循环,python,pandas,numpy,Python,Pandas,Numpy,我写了一些代码,现在我想迭代这些代码,应用数据集。但我得到了同样的结果 为什么我会得到同样的结果 matrix = np.zeros((106, 106)) for k in result: p = result[0] for j in result: q = result[1] matrix[result.index(k), result.index(j)] = frdist(p, q) print(matrix) 更新: 递归错误发生在这个

我写了一些代码,现在我想迭代这些代码,应用数据集。但我得到了同样的结果

为什么我会得到同样的结果

matrix = np.zeros((106, 106))

for k in result:
    p = result[0]
    for j in result:
        q = result[1]
        matrix[result.index(k), result.index(j)] = frdist(p, q)
print(matrix)
更新: 递归错误发生在这个部分。无法更改,因为它是的基本部分。有什么想法吗

[[0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]
 [0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]
 [0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]
 ...
 [0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]
 [0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]
 [0.13215994 0.13215994 0.13215994 ... 0.13215994 0.13215994 0.13215994]]
你想要


您正在对结果进行循环,但是
p
q
在每次迭代时都被设置为相同的值(分别为结果[0]和结果[1]),因此每次都计算相同的值。我想你指的是结果中的p的
:结果中的q的
我猜你指的是
frdist(I,j)
@ALollz现在我的矩阵是0,除了行的第二个数字是0.13215994谢谢。它适用于小数据。所以我接受了答案。但在我的例子中,我得到了
递归错误:相比之下,超过了最大递归深度
@Mamed你认为有多大?我的意思是,这是二次增长的,所以在某一点上,这在时间上会有问题。但是您仍然确定在
frdist(p,q)
中没有导致错误的递归(可能是一些从未发生过的检查)?一个简单的玩具例子,制作一个10K x 10K矩阵对我很有用
__all__ = ['frdist']


def _c(ca, i, j, p, q):

    if ca[i, j] > -1:
        return ca[i, j]
    elif i == 0 and j == 0:
        ca[i, j] = np.linalg.norm(p[i]-q[j])
    elif i > 0 and j == 0:
        ca[i, j] = max(_c(ca, i-1, 0, p, q), np.linalg.norm(p[i]-q[j]))
    elif i == 0 and j > 0:
        ca[i, j] = max(_c(ca, 0, j-1, p, q), np.linalg.norm(p[i]-q[j]))
    elif i > 0 and j > 0:
        ca[i, j] = max(
            min(
                _c(ca, i-1, j, p, q),
                _c(ca, i-1, j-1, p, q),
                _c(ca, i, j-1, p, q)
            ),
            np.linalg.norm(p[i]-q[j])
            )
    else:
        ca[i, j] = float('inf')

    return ca[i, j]
for k, p in enumerate(result):
    for j, q in enumerate(result):
        matrix[k, j] = frdist(p, q)