我想将2 for循环优化为单个for循环,有没有办法因为数组的长度非常大。
A = [1,4,2 6,9,10,80] #length of list is very large
B = []
for x in A:
for y in A:
if x != y:
B.append(abs(x-y))
print(B)
答案 0 :(得分:1)
不是更好,但更加pythonic:
glBlendFuncSeparate(GL_SOURCE_ALPHA, GL_ONE_MINUS_SOURCE_ALPHA, GL_ONE, GL_ONE);
除非您绝对需要重复项(B = [abs(x-y) for x in A for y in A if x!=y]
),否则您可以将列表的一半(从而计算):
abs(a-b) == abs(b-a)
最终你可以使用B = [abs(A[i]-A[j]) for i in range(len(A)) for j in range(i+1, len(A))]
的强大功能来获得C ++加速:
numpy
但无论如何,这总是O(n ^ 2)......