我在python中有一个数组,我想在所有数组中从每个int中减去一个数组。例如:
arr = [[2,3,4],
[5,6,7],
[8,9,10]]
#this should become this:
arr = [[1,2,3],
[4,5,6],
[7,8,9]]
我尝试过这样做的几种方式
for i in arr:
for j in i:
j-=1 #doesn't work!
我知道使用numpy这样做会更容易,但这适用于我正在进行的大型项目,因此实施numpy需要数小时,如果不是更多的话。谢谢!
答案 0 :(得分:1)
您可以使用嵌套列表理解:
arr = [[y - 1 for y in x] for x in arr]
答案 1 :(得分:1)
所以你这样做的方法就是将循环中的变量j
重新分配给原始值减去一个。但是,您要做的是将索引j
处的数组值重新分配给原始值减去1。要在不使用numpy
的情况下执行此操作,只需遍历数组的所有索引,然后替换值:
for i in range(len(arr)):
for j in range(len(arr[i])):
arr[i][j] -= 1
如果您不确定这是为什么,请查看变量赋值在Python中的工作原理。
答案 2 :(得分:0)
您的解决方案不起作用,因为j
是数组中值的副本,而不是指向数组项本身的指针。
以下是有效的示例代码。实质上,遍历数组中的每个位置,并修改该位置的原始数组。
arr = [[2,3,4],
[5,6,7],
[8,9,10]]
for x_idx, x in enumerate(arr):
for y_idx, y in enumerate(x):
arr[x_idx][y_idx] -= 1
print(arr)