使用 Python 且不使用 NumPy 的二维数组元素计算
2D array element calculation using Python and without NumPy
我有一个二维数组来为每个元素做一些计算,格式如下:
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
定义一个 tuple
并且您在执行时没有问题:
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)]
请注意,您预期的输入显示的是列表,所以也许您想要的更多:
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]]
如果您使用括号,您将得到一个元组列表:
[(2, 6, 3), (5, 12, 6), (8, 18, 9)]
我有一个二维数组来为每个元素做一些计算,格式如下:
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
定义一个 tuple
并且您在执行时没有问题:
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)]
请注意,您预期的输入显示的是列表,所以也许您想要的更多:
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]]
如果您使用括号,您将得到一个元组列表:
[(2, 6, 3), (5, 12, 6), (8, 18, 9)]