Von jeder Zahl in einer Liste in Python einen Wert abziehen?


84

Ich habe eine Liste

 a = [49, 51, 53, 56]

Wie subtrahiere ich 13 von jedem ganzzahligen Wert in der Liste?

Antworten:


146

Mit einem Listenverständnis :

a = [x - 13 for x in a]

2
Indem Sie def minus13(a):die obige Zeile einfügen und eine Ebene einrücken.
Ignacio Vazquez-Abrams

8
Warum a[:]auf der lhs, anstatt nur zurück zuzuweisen a? Erstellt keine a[:]Kopie der Liste?
istruble


4
Was getan werden sollte, ist, dass der Wert aus dem Listenverständnis von der Funktion zurückgegeben wird und der Aufrufer beschließen sollte, die vorhandene Sequenz gegebenenfalls zu ersetzen.
Ignacio Vazquez-Abrams

1
@istruble: Nur direkt einem Willen zuzuweisen, funktioniert genauso gut. Das a = [x - 13 for x in a]wird genauso gut funktionieren und ist weniger verwirrend.
Lennart Regebro

71

Wenn Sie viel mit Zahlen arbeiten, sollten Sie sich NumPy ansehen . Sie können alle Arten von Operationen direkt an numerischen Arrays ausführen. Zum Beispiel:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])

1
Ich habe einen kurzen Test durchgeführt und es wird ein neues Array zurückgegeben, wobei das ursprüngliche Array unberührt bleibt.
Francois

10

Sie können die Funktion map () verwenden:

a = list(map(lambda x: x - 13, a))

7
@ Frost.baka In Python 3 gibt map ein Kartenobjekt zurück. In Python 2 wird die Liste zurückgegeben.
Sputnikus

5

Zur Klärung einer bereits veröffentlichten Lösung aufgrund von Fragen in den Kommentaren

import numpy

array = numpy.array([49, 51, 53, 56])
array = array - 13

wird ausgegeben:

Array ([36, 38, 40, 43])


3

Das wird funktionieren:

for i in range(len(a)):
  a[i] -= 13

4
Die Listenverständnislösung ist viel pythonischer. Sie könnten sie mögen. docs.python.org/tutorial/…
istruble

Wer hat meinen Kommentar gelöscht? - Ich sehe keinen Sinn darin, die Länge von a zu zählen. Eine einfache Berechnung durchführen.
Jaycodez

2
Die Zählung ist erforderlich, wenn der Algorithmus auf diese Weise ausgedrückt werden soll, damit eine Indexvariable ( i) alle möglichen Indexwerte durchläuft. Diese Indexvariable wird benötigt, um jedes Element in der Liste zu mutieren.
Santa
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.