【发布时间】:2021-09-25 19:54:15
【问题描述】:
我正在创建一个函数来将列表中的两个最大值相乘。
例如:nums = [5,2,5,4]
这里我的结果应该是 25 将 5(索引 0)乘以 5(索引 2)。
但它给了 20。
为什么它不迭代或不考虑此列表中的下 5 个,即索引 2 的 5 个?
def max_pair_product_fast(nums):
num1 = max(nums)
print("Maximun = ", num1, "Index = ",nums.index(num1))
num2 = 0
for i in nums:
if nums.index(num1) != nums.index(i) and num2 < = i :
num2 = i
print("Num 2 : ",num2)
return num1 * num2
nums = [5,2,5,4]
print("Multiplication = ",max_pair_product_fast(nums))
输出:
PS D:\Code> & C:/Users/kshar/AppData/Local/Microsoft/WindowsApps/PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0/python.exe d:/Code/Algo/mppf.py
Maximun = 5 Index = 0
Num 2 : 2
Num 2 : 4
Multiplication = 20
如果我删除条件nums.index(num1) != nums.index(i),那么它只会将最大值(在本例中为 5)与自身相乘。
【问题讨论】:
-
index(i)返回值i第一次 出现的索引。因此,您的方法不适用于重复的最大值,
标签: python list algorithm loops if-statement