Referencje współdzielone i problem z uszczupleniem listy

0

Witam! Piszę program, rozwiązujący proste szyfry podstawieniowe. W poniższym przykładzie znajduje się przykładowe słowo z kryptogramu ('ajahzlvwrf') oraz fragment programu, który oczyszcza uzyskaną wcześniej listę słów (skopiowaną do poniższego kodu) z tych słów, które zawierają co najmniej jedną literę z kryptogramu 'ajahzlvwrf' w dokładnie tym samym miejscu co w kryptogramie. Słowo 'acarpelous' na przykład posiada pierwszą literę 'a', tak samo jak kryptogram 'ajahzlvwrf', więc to słowo zostaje usunięte z listy słów (lista_list). Ale słowo 'adactylous' też posiada 1-szą literę 'a', ale ono (i kilka innych) już nie zostaje usunięte. Wiem o referencjach współdzielonych, dlatego w swoim kodzie nie usówałem słów z oryginalnej listy słów (lista_list), ale z jej kopii (tu: kopia_listy_list = lista_list[:], ale zrobiłem też wcześniej kopia_listy_list = lista_list.copy() ). W innych programach tak właśnie się (z pełnym sukcesem) z tym problemem rozprawiałem. Tutaj to nie działa, bo kiedy printuję listę_list, okazuje się, że z niej też usówane są słowa, które mają być usówane jedynie z jej kopii, a w związku z tym program, iterując przez oryginalną listę_list, z której co chwilę wypada jakieś słowo, będzie niektóre słowa pomijał w analizie... W czym tkwi błąd? lista_list jest (i musi być) listą dwuwymiarową (jak sama nazwa wskazuje). Może to właśnie w tym tkwi problem. Jeśli ktoś wie, w czym tkwi problem, bardzo proszę o pomoc i z góry dziękuję.

lista_slow = ['ajahzlvwrf']

lista_list = [['acarpelous', 'adactylous', 'adaptively', 'amateurish','anabolites', 'anaglyphic', 'anaglyptic',
               'analogised', 'analogized', 'analogizes', 'anamorphic', 'anarchised', 'anarchized', 'anarchizes',
               'anastrophe', 'anatomised', 'anatomized', 'anatomizes', 'babylonish', 'cacomistle', 'cochineals',
               'cockatiels', 'cockfights', 'cocklairds', 'cockneyish', 'cockneyism', 'cocktailed', 'cuckolding',
               'cyclograph', 'cyclopedia', 'dedicators', 'dedicatory', 'deductions', 'didelphous', 'didynamous',
               'elevations', 'emendators', 'emendatory', 'everything', 'execrating', 'execration', 'executions',
               'exemptions', 'eyebrights', 'idiographs', 'iridaceous', 'iridectomy', 'irishwoman', 'irishwomen',
               'membranous', 'mimeograph', 'mimography', 'nonpareils', 'odontalgic', 'paperbound', 'popularise',
               'popularity', 'popularize', 'populating', 'suspecting', 'tetraploid', 'tetrapodic', 'tetrapolis',
               'totalizers', 'tutworkman', 'tutworkmen', 'usucapient', 'usucapting', 'usucaption', 'usurpation',
               'usurpative', 'usurpingly']]

kopia_listy_list = lista_list[:]

for indexik, podlista in enumerate(lista_list):
    for slowo in podlista:
        for nr_litery,litera in enumerate(slowo):
            if litera == lista_slow[indexik][nr_litery]:
                print('slowo: ',slowo)
                kopia_listy_list[indexik].remove(slowo)
                print(lista_list)
                break
0

Działa, Wielkie Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1