Python:4表示循环,比较列表项

2024-09-30 08:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常可怕的算法来比较原子之间的距离,但它的工作原理并不是我想要的那样。代码如下:

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,..,m]

例如:

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)

先谢谢你。你知道吗


Tags: in算法距离fordistdistance原理原子
2条回答

虽然gnibbler可能是正确的,因为这是您应该做的,但这是您当前代码简化为:

for k in ResListA:
    for n in ResListB:
        for counter4, m in enumerate(k.atoms):
            for counter1, z in enumerate(ResListB[counter4].atoms):
                coordDist = distance.distance(m, n.atoms[counter1])

你的问题是你需要:

for z in ResListB[counter2].atoms:

而不是

for z in ResListB[counter4].atoms:

我认为你的代码可以写得更像这样。你知道吗

for k in ResListA:
    for n in ResListB:
        for m in k.atoms:
            for z in n.atoms:
                coordDist = distance.distance(m.atoms, z.atoms)

不知道distance.distance做什么。你不应该做一些涉及coordDist的事情吗?你知道吗

相关问题 更多 >

    热门问题