Вы можете отслеживать, какие документы вы уже сравнили, например, (с номерами;))
compared = set()
for i in [1,2,3]:
for j in [1,2,3]:
pair = frozenset((i,j))
if i != k and pair not in compared:
compare.add(pair)
compare(i,j)
Другая идея заключается в том, чтобы сначала создать комбинацию документов и выполнить итерации по ним. Но для того, чтобы сгенерировать это, вам нужно выполнить итерации по обоим спискам, а затем снова выполнить итерации по списку результатов, поэтому я не думаю, что он имеет какое-либо преимущество.
Обновление
Если у вас есть документы в списке, то ответ Хогана действительно лучше. Но я думаю, что нужен лучший пример:
docs = [1,2,3]
l = len(docs)
for i in range(l):
for j in range(i+1,l):
compare(l[i],l[j])