2017-02-05 6 views
0

Ich habe eine Art von Array in Python, und ich suche nach Subtrahieren eins von jedem int in allem. zum Beispiel:Subtrahieren von jedem Element in Array in Python

arr = [[2,3,4], 
     [5,6,7], 
     [8,9,10]] 
#this should become this: 
arr = [[1,2,3], 
     [4,5,6], 
     [7,8,9]] 

gibt es ein paar Möglichkeiten, ich habe versucht, diese

for i in arr: 
    for j in i: 
     j-=1  #doesn't work! 

Ich bin mir dessen bewusst zu tun wäre es einfacher, dies mit numpy zu tun, aber das ist für ein großes Projekt, das Ich arbeite daran, also würde die Implementierung von numpy Stunden dauern, wenn nicht mehr. Vielen Dank!

Antwort

1

So die Art und Weise, dass Sie es tun. Was Sie jedoch tun möchten, ist, den Wert des Arrays AT den Index j um eins weniger als seinen ursprünglichen Wert neu zuzuweisen. Um dies zu tun, ohne numpy, einfach eine Schleife durch alle Indizes des Arrays, und dann den Wert ersetzen:

for i in range(len(arr)): 
    for j in range(len(arr[i])): 
     arr[i][j] -= 1 

Wenn Sie sich nicht sicher ist, warum dies ist, zu prüfen, wie variable Zuordnung funktioniert in Python.

+1

Das funktioniert super! Vielen Dank! –

1

Sie könnten eine verschachtelte Liste Verständnis verwenden: nur ist die Neuzuweisung die Variable j innerhalb der Schleife zu einem weniger ihren ursprünglichen Wert

arr = [[y - 1 for y in x] for x in arr] 
0

Ihre Lösung hat nicht funktioniert, weil j eine Kopie des Werts von Ihrem Array ist, anstatt einen Zeiger auf das Array-Element selbst.

Unten ist Beispielcode, der funktioniert. Im Wesentlichen durchlaufen Sie jede Position im Array und ändern das ursprüngliche Array an dieser Position.

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) 
Verwandte Themen