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