我有这个多维数组:
n = [[1], [2], [3], [4], [5], [6], [7, 10], [8], [9], [7, 10]]
我想用1减去所有这些。结果将是:
result = [[0], [1], [2], [3], [4], [5], [6, 9], [7], [8], [6, 9]]
答案 0 :(得分:4)
如果您确实有列表列表,请使用嵌套列表解析:
In [13]: result = [[e-1 for e in i] for i in n]
In [14]: print result
[[0], [1], [2], [3], [4], [5], [6, 9], [7], [8], [6, 9]]
答案 1 :(得分:2)
for x in n:
for i, y in enumerate(x):
x[i] = y - 1
这至少在空间方面更有效率。
或者如果你想使用像zhangxaochen这样的嵌套列表理解,但是将它分配给相同的值,那么就可以了:
n[:] = [[b - 1 for b in a] for a in n]
请注意,这实际上仍会创建两个额外的列表,因此它具有与将其分配给新数组相同的空间复杂性。
答案 2 :(得分:1)
result=n
for a in range(len(n)):
for b in range(len(n[a])):
result[a][b]=n[a][b]-1
答案 3 :(得分:1)
或者您可以使用map()
:
>>> import operator
>>> n = [[1], [2], [3], [4], [5], [6], [7, 10], [8], [9], [7, 10]]
>>> map(lambda x: map(lambda y: operator.sub(y, 1), x), n)
[[0], [1], [2], [3], [4], [5], [6, 9], [7], [8], [6, 9]]
答案 4 :(得分:1)
def difference(a, n):
try:
return a - n
except TypeError:
return [difference(i, n) for i in a]
>>> difference([[1], [2], [3], [4], [5], [6], [7, 10], [8], [9], [7, 10]], 1)
[[0], [1], [2], [3], [4], [5], [6, 9], [7], [8], [6, 9]]
>>> difference([3, [1, 9, [1, 2, [3, 4, [5, 6]]]], [2], [[3, 4], [5, 6]], [3], [7, 10]], 1)
[2, [0, 8, [0, 1, [2, 3, [4, 5]]]], [1], [[2, 3], [4, 5]], [2], [6, 9]]
适用于所有多维列表。