我该如何优化这段代码?可能是通过列表理解?

How can i optimize this code? Maybe though a list comporehension?

我需要加速这段代码:

我认为我能做的第一件事是修改获取列表的方式,这是我在BOLD.

中写的部分

¿一些想法?我尝试使用列表理解来做到这一点,但总是在赋值前给我引用的错误。

def transform(A, x):
    
    from math import factorial
    
    def comb(i,x):
        return factorial(i)/(factorial(x)*factorial(i-x))

    lis = []

    # --- FROM HERE ---
    for i in A:
        suma = 0
        for j in range(x,i+1):
            suma += comb(j,x)
        lis.append(suma)
    # --- TO HERE ---

    return lis
    
    res = lis[0]  
    
    for i in lis[1:]:
        res = int(res) ^ int(i)
                                        
    return res

谢谢

我将实际回答您的具体问题,尽管正如上面每个人所提到的,它几乎肯定不会提高您的 运行 速度。你有:

    suma = 0
    for j in range(x,i+1):
       suma += comb(j,x)

这个可以化成一笔:

    suma = sum(comb(j, x) for j in range(x, i + 1))

你的外循环是:

lis = []
for i in A:
    suma = sum(....) # See code above
    lis.append(suma)

可以转化为下面的列表理解:

lis = [sum(....) for i in A]