查找列表中的最大绝对值
Posted
技术标签:
【中文标题】查找列表中的最大绝对值【英文标题】:Find the maximum absolute value in a list 【发布时间】:2020-07-31 01:22:56 【问题描述】:我正在寻找随机列表中的最大绝对值。我需要在一个函数中创建它。我不确定我在这里做错了什么。我有一个 for 循环设置,所以它应该检查每个数字,但它只返回第一个值。
def main():
print(maxabsinlst([-19, -3, 20, -1, 5, -25]))
def maxabsinlst(num):
for x in (num):
max_abs_value = num[5]
if abs(x) > max_abs_value:
max_abs_value = abs(x)
return max(abs(max_abs_value))
main()
【问题讨论】:
它没有返回第一个值。 欢迎来到 Stack Overflow。如果它回答了您的问题,请不要忘记接受答案(勾选答案旁边的复选标记)。这样,您的问题就不会显示为未回答。还投票赞成好的答案。 – 从这里开始,请使用tour,阅读what's on-topic,并查看How to Ask a Good Question。 【参考方案1】:最短的方法是:
def maxabsinlst(num):
return max(map(abs, num))
map()
函数将abs()
应用于列表中的每个数字,并返回这些绝对值的列表,然后max()
查找列表中的最大值。
【讨论】:
你还在使用 Python 2? 不知道你在做什么。我在这里使用 Python 3。 在 Python 3 中它不是一个列表。 @superbrain 你在说什么?这是python3? 在 Python 3 中,map
不返回列表。【参考方案2】:
您在循环内将max_abs_value
分配给num[5]
。而是将其分配为列表的第一个元素,然后循环遍历它与其他元素进行比较
def main():
print(maxabsinlst([-19, -3, 20, -1, 5, -25]))
def maxabsinlst(num):
max_abs_value = abs(num[0])
for x in num[1:]:
if abs(x) > max_abs_value:
max_abs_value = abs(x)
return max_abs_value
main()
或
In [36]: max(abs(i) for i in [-19, -3, 20, -1, 5, -25])
Out[36]: 25
【讨论】:
【参考方案3】:你可以让它更简洁一些:
def max_abs_in_lst(num):
num = [abs(i) for i in num]
return max(num)
【讨论】:
【参考方案4】:max_abs_value = num[5]
每次 for 循环运行时,都会将最大值设置为 -25。将值存储在for循环之外,并用max_abs_value = 0
进行初始化
【讨论】:
【参考方案5】:您的函数存在一些问题。首先,您在for
循环的每次迭代中设置max_abs_value
。其次,您假设传递给函数的列表每次的长度都是 6。第三,您从未计算过num[5]
的绝对值。因此,您将abs(x)
与负数进行比较。第四,一旦发现 any 值大于max_abs_value
,您就会从函数中返回。您无法保证它是列表中的最大值。
你想要的是
def maxabsinlist(num):
max_abs_value=abs(num[0])
for x in num[1:]:
value=abs(x)
if value > max_abs_value:
max_abs_value=value
return max_abs_value
【讨论】:
以上是关于查找列表中的最大绝对值的主要内容,如果未能解决你的问题,请参考以下文章