在列表中查找最大绝对值

2024-09-30 22:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望得到随机列表中的最大绝对值。我需要在函数中创建它。我不确定我做错了什么。我有一个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()

Tags: 函数in列表forreturnifvaluemain
3条回答

您正在将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

您可以将其变得更加简洁:

def max_abs_in_lst(num):
    num = [abs(i) for i in num]
    return max(num)

最短的方法是:

def maxabsinlst(num):
    return max(map(abs, num))

map()函数将abs()应用于列表中的每个数字,并返回这些绝对值的列表,然后max()查找列表中的最大值

相关问题 更多 >