Próbuję porównać dwie listy i znaleźć pozycję i zmienioną postać w tej pozycji. Na przykład są to dwie listy:Porównywanie dwóch list i znajdowanie indeksów zmian
list1 = ['I', 'C', 'A', 'N', 'R', 'U', 'N']
list2 = ['I', 'K', 'A', 'N', 'R', 'U', 'T']
Chcę mieć możliwość wyprowadzania pozycji i zmiany różnic między tymi listami. Jak widać, literę można powtórzyć wiele razy w innej pozycji indeksu. To jest kod, który próbowałem, ale nie mogę wydrukować dokładnie drugiej lokalizacji.
for indexing in range(0, len(list1)):
if list1[indexing] != list2[indexing]:
dontuseindex = indexing
poschange = indexing + 1
changecharacter = list2[indexing]
for indexingagain in range(dontuseindex + 1, len(list1)):
if list1[indexingagain] != list2[indexingagain]:
secondposchange = indexingagain + 1
secondchangecharacter = list2[indexingagain]
Czy istnieje lepszy sposób rozwiązania tego problemu lub sugestii dotyczących kodu, który mam?
Moje oczekiwany wynik byłby:
2 K
7 T
Czy chodzi ci tylko o zamienniki, czy też o insercje/skreślenia? W pierwszym przypadku: Po prostu 'zip' i porównaj; w tym drugim przypadku użyj wariantu [Levenshtein distance] (https: //en.wikipedia.org/wiki/Levenshtein_distance) –
@PeterWood podał moje oczekiwane wyjście – interstellar
@tobias_k Mam na myśli tylko zamienniki. Listy będą zawsze miały tę samą długość. – interstellar