[英]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.