首页 > 解决方案 > 计算列表中每个元素的成对操作(python)

问题描述

我将如何对列表 a 中的每个矩阵执行成对运算?我期待 10 个新变量 (n*(n-1))/2 其中 n 是列表 a 中的元素数。(5*(5-1))/2 = 10。

我将如何以某种方式做到这一点,以便它可以随任意数量的 n 扩展?

# list of matrices
a = [matrix([[ 1.1],[2.2]]),
    matrix([[3.3],[ 4.4]]),
    matrix([[5.5],[7.7]]),
    matrix([[6.6],[9.9]]),
    matrix([[8.8],[0.1]])]

b1 = a[0] - a[1] # no need to do a[0] - a[0]
b2 = a[0] - a[2]
b3 = a[0] - a[3]
b4 = a[0] - a[4]
b5 = a[1] - a[2] # no need to do a[1] - a[0]
b6 = a[1] - a[3]
b7 = a[1] - a[4]
b8 = a[2] - a[3]
b9 = a[2] - a[4]
b10 = a[3] - a[4]

标签: pythonnumpy

解决方案


希望这可以帮助:

length = len(a)
i = 0
for x in range(length):
    for y in range(length):
        if x >= y : continue
        i += 1
        exec(f'b{i}=a[{x}]-a[{y}]')

推荐阅读