我試圖在同一索引處找到兩個不同串列的最大值。例子:
l1 = [11,4,7,9]
l2 = [2,10,9,6]
這個例子的結果是 l1 和 l2 在它們的第三個索引處都最大化(其中 l1 = 7 和 l2 = 9)。
是否有可以執行此操作的現有功能?如果沒有,我將如何處理這個問題。
uj5u.com熱心網友回復:
您確實需要更好地將您的意思/期望定義為“兩者都最大化”的概念。
例如,這對值可以被視為笛卡爾平面中的 x,y 坐標,距離原點最遠的歐幾里得距離代表最大化概念:
l1 = [11,4,7,9]
l2 = [2,10,9,6]
i = max(range(len(l1)),key=lambda i:l1[i]**2 l2[i]**2)
print(i)
2
這將選擇第三個索引,但在這種特殊情況下,簡單的值總和也會如此。
uj5u.com熱心網友回復:
您可以撰寫一個簡單的argmax函式(如本答案中所述):
def argmax(iterable):
return max(enumerate(iterable), key=lambda x: x[1])[0]
并在成對和上呼叫它:
argmax(map(sum, zip(l1, l2)))
# 2
關于 utils 的一些檔案:
enumeratemaxmapsumzip
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360859.html
上一篇:有沒有辦法替換串列中的隨機單詞?
