我需要将很长列表中的每个项目(12471个项目)与同一列表中的每个其他项目进行比较。下面是我的列表:Python - 将列表中的每个项目与该列表中的每个项目进行比较
[array([3, 4, 5])
array([ 6, 8, 10])
array([ 9, 12, 15])
array([12, 16, 20])
array([15, 20, 25])
...] #12471 items long
我需要比较每个数组的第二项与每个其他数组的第一个项目,看他们是否相等。最好是以非常有效的方式。有没有一种简单而有效的方法来在Python 2.x中做到这一点?
我在这里工作了一种非常原始的方法,但它是非常缓慢:
ls=len(myList) #12471
l=ls
k=0
for i in myList:
k+=1
while l>=0:
l-=1
if i[1]==myList[l][0]:
#Do stuff
l=ls
只是做了计算信封的背面:你有N^2的比较做N = 10^7。如果一次比较只需要1ns,它仍然需要一整天。 – Julien
你知道这些数组包含的值的范围吗?有没有关于这些数组元素的可能值的其他信息? – Kevin
@凯文他们都是毕达哥拉斯三元组。我不确定这是否有帮助。 –