簡體   English   中英

查找列表中的最大絕對值

[英]Find the maximum absolute value in a list

我正在尋找隨機列表中的最大絕對值。 我需要在 function 中創建它。 我不確定我在這里做錯了什么。 我有一個 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()

最短的方法是:

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

map() function 將abs()應用於列表中的每個數字,並返回這些絕對值的列表,然后max()找到列表中的最大值。

您正在將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)

max_abs_value = num[5]

每次 for 循環運行時,都會將最大值設置為 -25。 將值存儲在 for 循環之外並使用max_abs_value = 0對其進行初始化

您的 function 存在一些問題。 首先,您在for循環的每次迭代中設置max_abs_value 其次,您假設傳遞給 function 的列表每次的長度都是 6。 第三,您從未計算過num[5]的絕對值。 因此,您將abs(x)與負數進行比較。 第四,一旦發現任何大於max_abs_value的值,您就會從 function 返回。 您無法保證它是列表中的最大值。

你想要的是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM