Odjąć wartość od każdej liczby na liście w Pythonie?

86

Mam listę

 a = [49, 51, 53, 56]

Jak odjąć 13 od każdej wartości całkowitej na liście?

jaycodez
źródło

Odpowiedzi:

150

Ze zrozumieniem listy :

a = [x - 13 for x in a]
Ignacio Vazquez-Abrams
źródło
2
Poprzez umieszczenie def minus13(a):w wierszu powyżej wcięcia jeden poziom.
Ignacio Vazquez-Abrams
8
Dlaczego a[:]po lewej stronie zamiast przypisywać z powrotem do a? Nie a[:]tworzy kopii listy?
istruble
2
istruble: stackoverflow.com/questions/4081561/…
Ignacio Vazquez-Abrams
4
Co powinno być zrobione to, że wartość z listy pojmowania powinny zostać zwrócone przez funkcję, a dzwoniący powinien zdecydować się na zastąpienie istniejącej sekwencji, jeśli właściwe.
Ignacio Vazquez-Abrams,
1
@istruble: samo przypisanie bezpośrednio do testamentu działa równie dobrze. Więc a = [x - 13 for x in a]będzie działać równie dobrze i jest mniej zagmatwany.
Lennart Regebro
71

Jeśli dużo pracujesz z liczbami, możesz rzucić okiem na NumPy . Umożliwia wykonywanie wszelkiego rodzaju operacji bezpośrednio na tablicach numerycznych. Na przykład:

>>> import numpy
>>> array = numpy.array([49, 51, 53, 56])
>>> array - 13
array([36, 38, 40, 43])
shang
źródło
1
Zrobiłem szybki test i zwraca on nową tablicę, pozostawiając oryginalną tablicę nietkniętą.
Francois,
10

Możesz użyć funkcji map () :

a = list(map(lambda x: x - 13, a))
sputnikus
źródło
7
@ Frost.baka W Pythonie 3 mapa zwraca obiekt mapy. W Pythonie 2 zwraca listę.
sputnikus
5

Aby wyjaśnić już opublikowane rozwiązanie z powodu pytań w komentarzach

import numpy

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

wyświetli:

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

JJ K.
źródło
3

To zadziała:

for i in range(len(a)):
  a[i] -= 13
Oscar Mederos
źródło
4
Rozwiązanie rozumienia list jest znacznie bardziej pytoniczne. Możesz je polubić. docs.python.org/tutorial/ ...
istruble,
Kto usunął mój komentarz? - Nie widzę sensu liczenia długości. Aby wykonać proste obliczenia.
jaycodez
2
Licznik jest niezbędny, jeśli algorytm ma być wyrażony w ten sposób, aby zmienna indeksująca ( i) iterowała przez wszystkie możliwe wartości indeksu. Ta zmienna indeksu jest potrzebna do mutowania każdego elementu na liście.
Święty Mikołaj