1

我有一个 2D 列表,我想从 2D 列表的所有元素中减去一个浮点值:

mat = [[1, 2], [3, 4]]
cons = 13
mat1 = cons - mat

但最后一行不起作用。如何在 python 的二维列表中执行此操作?

谢谢你。

4

3 回答 3

5

如果你做了很多这样的事情,考虑使用numpy

In [1]: import numpy as np

In [2]: mat = np.array([[1, 2], [3, 4]])

In [3]: cons = 13

In [4]: cons-mat
Out[4]: 
array([[12, 11],
       [10,  9]])
于 2013-09-03T12:02:55.083 回答
2

您不能从列表中减去一个数字或相反。如果您想坚持使用内置列表类型,您可以使用嵌套理解来执行此操作:

mat1 = [[cons - m for m in sublist] for sublist in mat]

如果您的列表可能比您示例中的列表大,则可能值得查看允许此类操作的 numpy 模块。

于 2013-09-03T12:03:44.813 回答
2

您可以使用嵌套列表推导:

mat1 = [[(cons - x) for x in row] for row in mat]
于 2013-09-03T12:02:30.033 回答