Python:如何将列表中的一个元素与自身之外的所有其他元素进行比较?

时间:2018-10-22 18:28:26

标签: python

例如listA = [1,2,3,4,5],我想将每个元素与listA[4]相乘,而在没有listA[4] * listA[4]的情况下获得最大积

6 个答案:

答案 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