我有一個相當可怕的算法來比較原子之間的距離,但它的作品不是我希望它的工作。下面是代碼:Python:4個循環,比較列表項
for k in ResListA:
for n in ResListB:
for m in ResListA[counter3].atoms:
for z in ResListB[counter4].atoms:
coordDist = distance.distance(ResListA[counter3].atoms[counter4],ResListB[counter2].atoms[counter1])
counter1 = counter1 + 1
counter1 = 0
counter4 = counter4 + 1
counter4 = 0
counter2 = counter2 + 1
counter2 = 0
counter3 = counter3 + 1
基本上我想要的最小距離之間
ResListA [0] .atoms [0,..,N]
ResListB [0,.., k] .atoms [0,..,m]
被計算。然而,它計算
ResListA [0] .atoms [0]
到
ResListB [0,..,K] .atoms [0,..,米]
例如:
ResListA [N,P,C,N,C] ResListB [C,C] [P,P] ...
它應該是
DIST(N,C)DIST(N, C)DIST(P,C)DIST(P,C)
不
DIST(N,C)DIST(N,C)DIST(N,P)DIST(N,P )
預先感謝您。
這是非常可怕的,並且縮進看起來不太正確。 – piokuc
在分配任何內容之前,您似乎正在使用'counter1'。 –
如果你可以忍受Numpy/Scipy的依賴,這看起來像['scipy.spatial.cdist']的工作(http://docs.scipy.org/doc/scipy/reference/generated/scipy .spatial.distance.cdist。HTML),因爲你正在做成對的距離。 –