嵌套在python中进行循环优化

时间:2016-10-16 09:11:42

标签: python loops optimization

我想将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)

1 个答案:

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