我正在制作一个重力模拟器,需要计算每个物体受到的合力。为了做到这一点,我需要遍历字典中每对物体(id: Body类实例),并获取这两个物体之间的引力。然后,我将累加所有力并得出结果。但是,在Python中如何仅遍历字典中每对项目一次?如果天体存储在列表中,那么问题就简单了:
for i in range(len(bodies)):
for j in range(len(bodies) - i - 1):
k = j - i + 1
b1 = bodies[i]
b2 = bodies[k]
O(n * log n)
算法代替O(n * n)
。请参考《编程珠玑》一书中的讨论。 - jfs