首页 > 解决方案 > 如何使用列表推导对 Python 3 中的矩阵执行数学运算?

问题描述

我必须创建一个函数,该函数将矩阵作为参数,并使用列表推导将列表中的每个元素除以 2(如果它是偶数)。因此,如果传递给函数的参数是 m = [[5, 4], [2, 3], [6, 7]] 函数将返回矩阵 m2 = [[5, 2], [1, 3] , [3, 7]]

我尝试了以下方法:

m = [[5, 4], [2, 3], [6, 7]]
result = [num / 2 for num in m if num % 2 == 0]
print (result)

但我收到此错误:

line 2, in <listcomp>
    result = [num / 2 for num in m if num % 2 == 0]
TypeError: unsupported operand type(s) for %: 'list' and 'int'

标签: pythonpython-3.x

解决方案


这就是您要寻找的:

def divide_evens_elems_list(lst):
    for i in range(len(lst)):
        for j in range(len(lst[i])):
            if lst[i][j]%2==0:
                lst[i][j]//=2

    return lst

m = [[5, 4], [2, 3], [6, 7]]
print(divide_evens_elems_list(m))

推荐阅读