Python中函数的奇怪行为

时间:2015-05-13 13:22:51

标签: python list function

def hbond(system, donors, acceptors):
    for frame in system.frames:
        result = len(frame.molecules)*[[0]*len(frame.molecules)]
        for i, mol1 in enumerate(frame.molecules):
            for j, mol2 in enumerate(frame.molecules):
                if i != j:

                    result[i][j] = isDonor(  
                        mol1, mol2, donors, acceptors, frame.cell[0]
                    ) #Problem with this assignment 


        yield result

您好我在使用这段代码时遇到了困难。 isDonor()是一个返回0或1的函数 问题是这个函数总是返回result作为一个列表,每个元素都等于0,无论初始化列表是什么。它就像列表中的所有元素一样被分配给isDonor函数的最后一个返回值。 但是,如果将代码更改为:

                    result[i][j] += isDonor(  
                        mol1, mol2, donors, acceptors, frame.cell[0]
                    ) 

由于初始化的列表元素为0,我将得到正确的结果。

我在Python中遗漏了有关范围的内容吗?

0 个答案:

没有答案