【问题标题】:Sum of elements of a matrix (list), but only at indexes given in another matrix (list)矩阵(列表)的元素总和,但仅在另一个矩阵(列表)中给出的索引处
【发布时间】:2021-10-30 10:58:13
【问题描述】:

我有一些包含整数的矩阵:

matrix = [[85, 61, 48, 100, 96],
 [23, 72, 13, 45, 36],
 [97, 80, 65, 84, 46],
 [80, 59, 76, 61, 99]]

和一个矩阵包含:

index = [[-1, 0, 0, -1, -1],
 [0, -1, 0, -1, -1],
 [-1, 0, -1, -1, 0],
 [-1, 0, -1, 0, -1]]

我想对矩阵的所有元素求和,其中索引中的元素等于-1,但我不能使用任何包。 预期的输出应该是 935。

提前致谢。

【问题讨论】:

    标签: python list matrix sum


    【解决方案1】:

    使用generator expression

    res = sum(v for ii, val in zip(index, matrix) for i, v in zip(ii, val) if i == -1)
    print(res)
    

    输出

    935
    

    作为替代方案:

    res = 0
    for ii, val in zip(index, matrix):
        for i, v in zip(ii, val):
            if i == -1:
                res += v
    

    【讨论】:

      【解决方案2】:

      您可以使用 itertools 来展平矩阵并将其沿索引压缩::

      import itertools as it
      sum([v for (i, v) in zip(it.chain.from_iterable(index), it.chain.from_iterable(matrix)) if i == -1])
      

      【讨论】:

        猜你喜欢
        • 2017-02-10
        • 1970-01-01
        • 1970-01-01
        • 2021-04-20
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        相关资源
        最近更新 更多