python绝对值_如何在Python中获得数字的绝对值?

有很多方法可以在Python中使用正值和负值。但是有时候我们只需要确保我们的价值没有负号即可。让我们看看绝对值如何提供帮助。

在这篇文章中:

在Python中获取绝对值的两种方法

使用Python的abs()函数获取绝对值

获取Python中整数的绝对值

获取Python中浮点值的绝对值

使用Python的math.fabs()函数获取绝对浮点值

示例:获取绝对值作为浮点值

从Python列表或数组获取绝对值

在Python列表中获取数字的绝对值

使用Python循环从列表中获取绝对值

从Python数组获取绝对值

从NumPy数组获取绝对值

概要

#在Python中获取绝对值的两种方法

在数学中,绝对值是数字的非负值,而不考虑其符号(Wikipedia,2019)。即,绝对值是描述数字与零的距离的值。

例如,的绝对值-12是12。并且的绝对值33是33。当我们不在乎符号时,我们的程序使用绝对值,而只需要该值。

Python有两种获取数字绝对值的方法:

内置abs()函数返回绝对值。

该math.fabs()函数还返回绝对值,但作为浮点值。

标准abs()功能是您95%的时间需要的功能。因此,让我们从那个开始。

#使用Pythonabs()函数获取绝对值

内置abs()函数返回绝对值(Lutz,2013年)。要执行此功能,该函数需要一个参数,该参数必须是一个数字(Python Docs,编号a)。然后,它返回该参数的绝对值。

要使用该函数,只需abs()在需要绝对值时调用:

abs(-23.43)

# Returns: 23.43

该abs()函数返回不同类型的值(Python Docs等):

当我们给出abs()整数或浮点值时,我们得到绝对的整数或浮点值作为回报。

但是,如果我们给出abs()一个复数,则该函数将返回该数字的大小。

#获取Python中整数的绝对值

因此,要获得整数的绝对值,我们只需将整数传递给abs()函数。这是一个例子:

# Some random integers

variableA = 28

variableB = -101

variableC = 0

variableD = -9116439

# Get the absolute values of those integers

absA = abs(variableA)

absB = abs(variableB)

absC = abs(variableC)

absD = abs(variableD)

# Output the results

print("Absolute values of integers with `abs()`:")

print("|", variableA, "| = ", absA, sep="")

print("|", variableB, "| = ", absB, sep="")

print("|", variableC, "| = ", absC, sep="")

print("|", variableD, "| = ", absD, sep="")

这个小程序首先生成四个整数变量(variableA到variableB)。有一个正值,两个负数和零。现在我们要获得它们的绝对价值。

因此,abs()接下来我们在每个变量上调用该函数。这为我们提供了一个值,该值指示特定数字与零的距离。我们把这些价值观在四个新的变量,absA通过absD。

然后,我们使用Python的print()函数输出原始数字及其绝对值。这是该输出的外观:

Absolute values of integers with `abs()`:

|28| = 28

|-101| = 101

|0| = 0

|-9116439| = 9116439

#获取Python中浮点值的绝对值

当然,我们也可以得到具有分数的数字的绝对值。为此,我们只需要调用abs()该值即可。这是一个简单的例子:

# Some random floating-point values

variableA = -12.34

variableB = -1.8457425364

variableC = -0.00000000001

variableD = 9424.5895279095

# Get the absolute value of each variable

absVarA = abs(variableA)

absVarB = abs(variableB)

absVarC = abs(variableC)

absVarD = abs(variableD)

# Output the results

print("Absolute values of floating point values with `abs()`:")

print("|", variableA, "| = ", absVarA, sep="")

print("|", variableB, "| = ", absVarB, sep="")

print("|", variableC, "| = ", absVarC, sep="")

print("|", variableD, "| = ", absVarD, sep="")

这个小程序产生四个浮点变量。我们称他们variableA通过variableD。

然后我们得到它们的绝对值。为此,我们abs()在每个变量上调用该函数。我们将函数的结果存储在一个新变量中(absVarA直到absVarD)。

接下来,我们用几个print()语句显示结果。每个输出原始变量及其绝对值:

|-12.34| = 12.34

|-1.8457425364| = 1.8457425364

|-1e-11| = 1e-11

|9424.5895279095| = 9424.5895279095

#使用Pythonmath.fabs()函数获取绝对浮点值

除标准abs()功能外,Python还具有该math.fabs()功能。此函数还需要一个参数。然后,它将该参数的绝对值作为浮点值返回(Python Docs,nd b)。

该行为类似于abs(),但是这里的主要区别在于:即使我们给出math.fabs()一个以整数开头的值,我们也总是返回浮点值。

要使用math.fabs(),我们只需做:

import math

math.fabs(-8)

# Returns: 8.0

#示例:获取绝对值作为浮点值

因此,为了获得绝对值作为浮点值,我们调用math.fabs()一个数值。这是一个例子:

import math

# Some random values

valueA = -4

valueB = -56

valueC = 26

valueD = -2.992474203

# Get the floating-point absolute value from each

fabs_A = math.fabs(valueA)

fabs_B = math.fabs(valueB)

fabs_C = math.fabs(valueC)

fabs_D = math.fabs(valueD)

# Output the results

print("Absolute floating-point values with `fabs()`:")

print("|", valueA, "| = ", fabs_A, sep="")

print("|", valueB, "| = ", fabs_B, sep="")

print("|", valueC, "| = ", fabs_C, sep="")

print("|", valueD, "| = ", fabs_D, sep="")

这个小程序首先导入math模块。然后,我们valueA通过声明四个变量valueB。它们的值包括正数和负数。

为了获得它们的绝对值,我们math.fabs()在每个变量上执行该函数。这使我们获得了带有小数部分的绝对值。我们将这些结果存储在fabs_A直通fabs_D变量中。

最后一部分具有print()显示原始值和绝对值的功能。从输出中可以看到,每个值都作为浮点值返回:

Absolute floating-point values with `fabs()`:

|-4| = 4.0

|-56| = 56.0

|26| = 26.0

|-2.992474203| = 2.992474203

#从Python列表或数组中获取绝对值

在上面的示例中,我们拥有abs()并math.fabs()返回单个值的绝对值。但是,如果我们有一系列值呢?让我们来看看。

#获取Python列表中数字的绝对值

Python有几种获取每个列表值的绝对值的方法。一种选择是列表理解表达式。这就提供了一种干净有效的方法,可以将完整列表转换为绝对值。

这是一个例子:

# Some random numbers

values = [-40, 58, -69, -84, 51, 76, -12, 36]

# Get the absolute value for each number

absValues = [abs(number) for number in values]

# Output data

print("Original numbers:\n", values)

print("Absolute values:\n", absValues)

在这个小程序中,我们首先创建一个名为的列表values。其值为正整数和负整数。

然后,我们对列表理解进行编码。该函数在其方括号([和])之间abs()获取每个number值的绝对值。该number变量来自我们的values列表。我们使用内联for表达式生成它for number in values。这将生成一个具有每个原始列表值绝对值的新列表。

然后,该print()函数将同时输出原始列表和具有绝对值的列表。这是该输出的外观:

Original numbers:

[-40, 58, -69, -84, 51, 76, -12, 36]

Absolute values:

[40, 58, 69, 84, 51, 76, 12, 36]

顺便说一句,如果您不需要保留原始列表值,只需将原始列表设置为列表理解的结果即可。例如:

# Some example values

values = [-40, 58, -69, -84, 51, 76, -12, 36]

# Replace the original numbers with the absolute values

values = [abs(number) for number in values]

#使用Python循环从列表中获取绝对值

虽然列表理解很有用,但并不是我们可以在每种情况下使用的东西。特别是如果除了简单获取绝对值之外,我们还想处理值,则常规for循环通常是更好的选择。

假设我们要获取列表中负值的绝对值,但将正值乘以2。这是我们如何使用Python循环进行编程的方法:

# Some positive and negative values

values = [-40, 58, -69, -84, 51, 76, -12, 36]

# Take the absolute value of negative values, but

# multiply positive values with 2

processed = []

for number in values:

if number < 0:

processed.append(abs(number))

else:

processed.append(number * 2)

# Output data

print("Original numbers:\n", values)

print("Processed numbers:\n", processed)

在这里,我们首先列出一个带有数字的列表。该values列表包含正整数和负整数。

然后,我们列出一个新列表processed。该列表最初是空的(但在循环内部被填充)。然后我们做一个for循环。此循环遍历values列表。循环number变量表示每个循环周期中的列表值。

在循环中,if / else语句将评估该变量。当它小于零时,该abs()函数采用其绝对值。然后,我们使用列表的append()方法将值添加到processed列表中。

当循环变量为零或更大时,该else子句将执行。在那里,我们将变量乘以2并将其添加到列表中。

代码的最后一部分具有Pythonprint()函数输出原始列表和已处理列表的功能。输出的内容如下:

Original numbers:

[-40, 58, -69, -84, 51, 76, -12, 36]

Processed numbers:

[40, 116, 69, 84, 102, 152, 12, 72]

如果不需要原始列表值,也可以使用for循环覆盖列表。一个方便的功能就是Python的enumerate()功能。看起来是这样的:

# Some positive and negative values

values = [-40, 58, -69, -84, 51, 76, -12, 36]

# Loop through the list and replace

# each number with its absolute value

for index, value in enumerate(values):

values[index] = abs(value)

#从Python数组获取绝对值

如果您的正值和负值在Python数组中,则获取它们的绝对值类似于使用列表。这是一个例子:

import array

# Create an array with random values

values = array.array('i', [-40, 58, -69, -84, 51, 76, -12, 36])

# Make a new array with the absolute values

absValues = array.array('i', [abs(value) for value in values])

# Output the results

print("Original array values:\n", values)

print("Absolute values:\n", absValues)

首先,我们导入array模块。然后,我们使用array.array()构造函数创建一个数组。该数组同时具有正整数和负整数。

然后,根据第一个数组的绝对值构建第二个数组。为了做到这一点,我们使用列表理解来构造数组。该表达式abs(value)从嵌入式for表达式生成的每个数字中获取绝对值(for value in values)。这样,我们遍历了原始列表,并在此过程中收集了绝对值。

代码的最后一位具有print()函数输出原始和绝对值数组的功能。看起来是这样的:

Original array values:

array('i', [-40, 58, -69, -84, 51, 76, -12, 36])

Absolute values:

array('i', [40, 58, 69, 84, 51, 76, 12, 36])

如果不需要原始数据,则最好用其绝对值覆盖该数组。例如:

values = array.array('i', [-40, 58, -69, -84, 51, 76, -12, 36])

# Overwrite existing array with absolute values

values = array.array('i', [abs(value) for value in values])

#从NumPy数组中获取绝对值

如果您使用适用于Python的NumPy数字编程包,则可能会有一个NumPy数组,您需要该数组中的绝对值。我们的操作方法如下:

import numpy

values = numpy.array([-40, 58, -69, -84, 51, 76, -12, 36])

# Make a new, absolute value array

absValues = numpy.abs(values)

print("Original NumPy array values:\n", values)

print("Absolute values:\n", absValues)

此代码首先导入numpy模块。然后,我们创建一个values使用正整数和负整数命名的数组。

为了获得它们的绝对值,我们调用numpy.abs()函数并将该数组作为参数传递。结果,NumPy返回一个新数组,其中包含原始数组中每个数字的绝对值。我们命名该数组absValues。

最后的print()语句显示两个数组。从输出中可以看出,numpy.abs()我们获得了每个原始数组值的绝对值:

Original NumPy array values:

[-40 58 -69 -84 51 76 -12 36]

Absolute values:

[40 58 69 84 51 76 12 36]

如果不需要保留原始数据,则可以用绝对值覆盖现有数组。这是如何做:

values = numpy.array([-40, 58, -69, -84, 51, 76, -12, 36])

# Overwrite array to get absolute values only

values = numpy.abs(values)

总结

Python的abs()函数返回整数和浮点数的绝对值。要使用它,我们调用函数并为其提供我们想要绝对值的参数。

为了获得列表或数组的绝对值,我们必须调用abs()每个元素。我们可以通过列表理解或for循环来做到这一点。

math.fabs()Python中还有一个函数。该值还返回绝对值,但始终为浮点值。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值