Вы написали
for o in range (0, len(list_a[i])):
for t in range(1, len(list_a[j])):
Значение range(1,...)
для t верно, когда o равно 0. Но когда o равно 1, 2,3 ... тогда t должно быть в range(o+1,...):
, но только если i==j
Я думаю, что есть только один элемент [['a', 'b'],... ['a', 'j', 'k']] в вашем примере, чтобы ограничить время выполнения и отображения, и я предполагаю, что на самом деле есть и другие элементы.Поэтому я протестировал второй список в качестве элемента, предполагая, какие виды сравнения вы бы хотели выполнить.Итак, я заметил некоторые проблемы с индексами, и вы увидите решения, принятые в следующем коде.
Я также изменил отображение, чтобы упростить анализ процесса.Обратите внимание на «хитрость», заключающуюся в постепенном добавлении в список ecr и отображении содержимого этого списка в конце.Следовательно, отображение является мгновенным, а не длинной строкой после отображения строки.
list_a = [[['a', 'b'],['c', 'd'], ['e', 'CB'], ['g', 'h'], ['a', 'j', 'k']],
[['l', 'm'],['b', 'n'], ['q', 'r'], ['CB', 'c', 'n']]]
ecr = []
for i in xrange(0, len(list_a)):
for j in xrange(i, len(list_a)):
ecr.append('XXXXXXXXXXXXXXXXXXX i,j='+str(i)+','+str(j))
for o in xrange (0, len(list_a[i])-(1 if i==j else 0)):
ecr.append('================= o='+str(o)+' < '+str(len(list_a[i])-(1 if i==j else 0)))
for t in xrange(o+1 if i==j else 0, len(list_a[j])):
ecr.append('------------- o,t='+str(o)+','+str(t))
try:
for x in xrange(0, len(list_a[i][o])):
ecr.append('~~~~~~~ x='+str(x))
for y in xrange(0, len(list_a[j][t])):
ecr.append("i,j="+str(i)+ ","+str(j)+'\n'+\
list_a[i][o][x]+ " o="+str(o)+ " x="+str(x)+'\n'+\
list_a[j][t][y]+ " t="+str(t)+ " y="+str(y)+'\n'+\
' ')
except IndexError:
ecr.append( "FAIL")
print '\n'.join(ecr)
Соответствует ли этот код вашей цели?