【问题标题】: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

标签: python absolute-value


【解决方案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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-04-22
          • 1970-01-01
          • 2021-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-16
          相关资源
          最近更新 更多