使用Python和不使用NumPy的二维数组元素计算

使用Python和不使用NumPy的二维数组元素计算,python,arrays,calculation,Python,Arrays,Calculation,我有一个2D数组,用于对每个元素进行计算,其格式如下: a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 经过计算,我的预期结果如下: a_new = [[2, 6, 3], [5, 12, 6], [8, 18, 9]] 我写了以下代码: f = 1 g = 2 a_1 = [c +f, (d+f)*g, e for (c, d, e) in array] #I expect this can bring the results to form the forma

我有一个2D数组,用于对每个元素进行计算,其格式如下:

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
经过计算,我的预期结果如下:

a_new = [[2, 6, 3], [5, 12, 6], [8, 18, 9]]
我写了以下代码:

f = 1
g = 2
a_1 = [c +f, (d+f)*g, e for (c, d, e) in array] #I expect this can bring the results to form the format I want.
但是,它有错误消息:

SyntaxError: invalid syntax
如何修改代码以获得我想要的结果?而且我也不想导入和使用NumPy进行计算。

c+f,(d+f)*g,e
定义一个
元组
,这样做就不会有问题:

my_tuple = c +f, (d+f)*g, e
但在列表理解语法中,需要使用括号保护元组以允许解析,否则python不知道参数何时停止:

a_1 = [(c +f, (d+f)*g, e) for (c, d, e) in a]
我得到:

[(2, 6, 3), (5, 12, 6), (8, 18, 9)]
[(2, 6, 3), (5, 12, 6), (8, 18, 9)]
请注意,您的预期输入显示了列表,因此这可能比您想要的更多:

a_1 = [[c +f, (d+f)*g, e] for (c, d, e) in a]

方括号将完成以下工作:

array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
f = 1
g = 2
a_1 = [[c +f, (d+f)*g, e] for (c, d, e) in array]
结果:

a_1
[[2, 6, 3], [5, 12, 6], [8, 18, 9]]

如果希望生成的数组
a_new=[[2,6,3],[5,12,6],[8,18,9]
如您的问题所述,您需要用方括号保护列表理解中的内部操作

a_new = [[c+f,(d+f)*g,e] for (c,d,e) in a]
您得到了一个无效的语法错误,因为您需要将
c+f,(d+f)*g,e
包装在方括号中,以便Python识别该操作

有些人指出,也可以使用括号而不是方括号。虽然这不会导致错误,但也不会导致您要查找的数组

如果使用方括号,您将得到一个列表:

[[2, 6, 3], [5, 12, 6], [8, 18, 9]]
如果使用括号,将得到元组列表: