У меня есть программа, которая выполняет поиск по двум отдельным спискам, позволяет называть их list1 и list2.Оптимизация вложенного цикла цикла с двумя списками
Я только хочу напечатать экземпляры, где list1 и list2 имеют соответствующие элементы. Дело в том, что не все элементы в обоих списках соответствуют друг другу, но первый, третий и четвертый элементы должны.
Если они совпадают, я хочу, чтобы полные списки (включая несоответствующие элементы) добавлялись к двум соответствующим спискам.
Я написал код следовать:
for item in list1:
for item2 in list2:
if (item[0] and item[2:4])==(item[0] and item2[2:4]):
newlist1.append(item)
newlist2.append(item2)
break
Это работает, но это очень неэффективно. Для некоторых из более крупных файлов, которые я просматриваю, для завершения матча может потребоваться более 10 секунд, и в идеале это должно быть не более половины.
Я думаю, что он не должен начинать с начала в списке2 каждый раз при запуске кода, этого должно быть достаточно, чтобы продолжить с последней точки, где было совпадение. Но я не знаю, как написать это в коде.
Знаете ли вы, что 'item [0] и item [2: 4]' будут равно 'item [0]', если 'item [0]' не false? – utdemir
@utdemir На самом деле он будет равен 'item [0]' _if_' item [0] 'оценивается как' False'; иначе он будет равен 'item [2: 4]' –
Вы правы; путать, извините. Но все же, ИМХО, это не похоже на то, что пытается сделать ОП. – utdemir