例如listA = [1,2,3,4,5]
,我想将每个元素与listA[4]
相乘,而在没有listA[4] * listA[4]
的情况下获得最大积
答案 0 :(得分:0)
您可以在此处使用numpy
import numpy as np
listA = [1,2,3,4,5]
num=4
to_multiply = listA.pop(num)
listA=np.array(listA)
max(listA*to_multiply)
或 切片numpy数组而不弹出任何元素
import numpy as np
listA = [1,2,3,4,5]
num=4
listA= np.array(listA)
max(listA[range(0,num)+range(num+1,len(listA))]*listA[num])
或
max([listA[i]*listA[num] for i in range(0,len(listA)) if i!=num])
或
listA = [1,2,3,4,5]
num=4
to_multiply = listA.pop(num)
max([(i*j) for i,j in zip(listA,[to_multiply]*num)])
答案 1 :(得分:0)
使用列表理解也可以不使用numpy
max([a*listA[4] for i,a in enumerate(listA]) if i!=4 )
答案 2 :(得分:0)
这是一种可读的迭代方法。计算除目标索引以外的所有索引中的最大值:
listA = [1,2,3,4,5]
TARGET_INDEX = 4
maximum = 0
for i, val in enumerate(listA):
if i == TARGET_INDEX:
continue
maximum = max(maximum, val*listA[TARGET_INDEX])
print maximum
答案 3 :(得分:0)
someList = [1,2,3,4,5]
maxN = 0
otherElement = 0
elementToMult = 4
for i, n in enumerate(someList):
tempVar = n * someList[elementToMult]
print(n, i, tempVar)
if tempVar > maxN:
maxN = tempVar
otherElement = i
print("The max is {0} which is {1} * {2}".format(maxN,someList[otherElement], someList[elementToMult]))
这将为您提供最大乘积,并将元素与给定元素相乘以获得最大乘积
答案 4 :(得分:0)
这可以通过heapq.nlargest()
import heapq as q
a = [1,2,3,4,5]
print(q.nlargest(2,[x*a[4] for x in a][1:]))
或简单的sorted()
:
a = [1,2,3,4,5]
print(sorted([x*a[4] for x in a])[(len(a)-2):(len(a)-1)])
enumerate()
甚至更短:
import heapq as q
a = [1,2,3,4,5]
print(q.nlargest(1,[x*a[4] for i, x in enumerate(a) if i != 4]))
或简单的max()
+枚举():
a = [1,2,3,4,5]
print(max([x*a[4] for i, x in enumerate(a) if i != 4]))
注意:那些返回列表。
答案 5 :(得分:0)
将一个元素与除自身之外的所有其他元素进行比较。鉴于数组中的所有元素都是正整数,我将maxP设为-1,则可以根据listA给定范围设置不同的值。
maxP = -1
for i in range(len(listA)):
for j in range(i,len(listA)):
if i!=j:
prod = listA[i] * listA[j]
if prod > maxP:
maxP = prod
return maxP