Jak zamienić liczbę ujemną na dodatnią?

99

Jak przekonwertować liczbę ujemną na dodatnią w Pythonie? (I zachowaj pozytywne.)

aneuryzm
źródło
Czytając oryginalne pytanie (lub powrót do oryginalnego sformułowania, jeśli zmiana zostanie zatwierdzona), nie jest jasne, co miało oznaczać zdanie w nawiasach. Czy chodziło Ci o to, że chciałeś zachować kopię oryginału, czy może chodziło Ci o to, że nie chcesz modyfikować wartości dodatnich?
jpmc26

Odpowiedzi:

206
>>> n = -42
>>> -n       # if you know n is negative
42
>>> abs(n)   # for any n
42

Nie zapomnij sprawdzić dokumentacji .


źródło
7
Jest też max(n, -n)(tylko inna alternatywa :)
tzot
8
maxto fajna sztuczka, ale szczególnie w Pythonie wiąże się z tym narzut, który będzie o 30% wolniejszy niż abs. Więc zdecydowanie powinieneś preferować więcej absniżmax
user1767754
57

zwykłe pomnożenie przez -1 działa w obie strony ...

>>> -10 * -1
10
>>> 10 * -1
-10
Jeroen Dierckx
źródło
1
To chyba najprostsze rozwiązanie. To rozwiązanie zamieniłoby liczbę ujemną na dodatnią i dodatnią na ujemną.
Naveen Raju
Klasyczna matematyka.
Macintosh Fan
21

Jeśli „zachowanie dodatniej liczby oznacza, że ​​chcesz, aby liczba dodatnia pozostała dodatnia, ale jednocześnie chcesz zamienić liczbę ujemną na dodatnią, użyj abs():

>>> abs(-1)
1
>>> abs(1)
1
BoltClock
źródło
8

Wbudowana funkcja abs () załatwiłaby sprawę.

positivenum = abs(negativenum)
Tim
źródło
4
In [6]: x = -2
In [7]: x
Out[7]: -2

In [8]: abs(x)
Out[8]: 2

Właściwie abszwróci absolute valuedowolną liczbę. Wartość bezwzględna jest zawsze liczbą nieujemną.

Tauquir
źródło
2
Czy abs (0) zwraca liczbę dodatnią? :)
2

Jeśli pracujesz z numpy, możesz użyć

import numpy as np
np.abs(-1.23)
>> 1.23

Zapewni wartości bezwzględne.

Pratik Jayarao
źródło