Удаление индексированных символов из списка не будет работать, если в последний индекс (Python 3) - PullRequest
0 голосов
/ 24 апреля 2020

Работа над кодом, который удаляет одинаковые буквы между двумя списками. Если между двумя списками имеется одинаковая буква, равная одному индексу, она удаляет как букву между ними, так и аналогичную букву. Тем не менее, код не работает, если аналогичная буква является последней позицией в списке.

def createList():
    return list(input("Type a list: ").upper())

def likeChar(list1, list2):
    if len(list1) <= len(list2):
        lenList = len(list1)
    else:
        lenList = len(list2)
    for i in range(lenList-1):
        if list1[i] == list2[i]:
            list1.pop(i)
            list2.pop(i)
    return list1, list2

def aroundChar(list1, list2):
    if len(list1) <= len(list2):
        shortList = list1
        longList = list2
    else:
        shortList = list2
        longList = list1
    for i in range(len(shortList)-1):
        if shortList[i] == longList[i+1]:
            longList.pop(i)
    return likeChar(shortList, longList)

list1 = createList()
list2 = createList()

while True:
    if len(list1) != len(likeChar(list1, list2)[0]):
        list1, list2 = likeChar(list1, list2)
    elif len(list1) != len(aroundChar(list1, list2)[0]) and len(list2) != len(aroundChar(list1, list2)[1]):
        list1, list2 = aroundChar(list1, list2)
    else:
        break

print(list1, list2)

Например: если я сделаю две строки AFCO & ADFAO , вывод должен быть и C, A . Однако, если я сделаю ABCDEFT & ABXCGBTZFP , он должен дать DE , GBP , но даст DEF , GBZFP , не удаляя Z . Я знаю, что проблема, вероятно, возникает с:

def aroundChar(list1, list2):
    if len(list1) <= len(list2):
        shortList = list1
        longList = list2
    else:
        shortList = list2
        longList = list1
    for i in range(len(shortList)-1):
        if shortList[i] == longList[i+1]:
            longList.pop(i)
    return likeChar(shortList, longList)

Кто-нибудь знает, что является причиной проблемы и как ее исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...