假设我有一个数组/要比较的事物列表。在我更熟悉的语言中,我会做类似的事情
for (int i = 0, i < mylist.size(); i++)
for (int j = i + 1, j < mylist.size(); j++)
compare(mylist[i], mylist[j])
这样可以确保我们只比较每对一次。在某些情况下,我正在对列表中包含的一堆对象进行碰撞检测。对于检测到的每个碰撞,将一个描述碰撞的小的“碰撞”对象添加到列表中,然后另一个例程循环循环以解决每个碰撞(取决于两个碰撞对象的性质)。显然,我只想报告每个碰撞一次。
现在,这样做的pythonic方式是什么,因为Python倾向于使用迭代器而不是遍历索引?
我有以下(越野车)代码:
for this in mylist:
for that in mylist:
compare(this, that)
但这显然会使每次碰撞发生两次,从而在尝试解决它们时导致一些奇怪的行为。那么这里的pythonic解决方案是什么?