我正在创建一个函数,将列表中的两个最大值相乘
例如: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)与自身相乘
海报是在问他原来的代码有什么问题,而不是简单地要求一块没有任何解释的新代码
这行代码可能导致问题
以您的示例为例,列表为[5,2,5,4]
num1是第一个最大值,5。此5的索引为0。但是,第二个最大值也是5。这个5的索引为2
编写nums.index(i)时,您希望程序知道第二个5位于索引2,但是,nums.index()函数将返回第一个出现的数字。因此,在这个迭代中nums.index(5)的值仍然是0
因此,您的程序会忽略这5,因为nums.index(5)总是0,它等于num1的索引
请尝试下面的方法以避免此问题:
您可以这样做:
相关问题 更多 >
编程相关推荐