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中遗漏了有关范围的内容吗?