Работа над кодом, который удаляет одинаковые буквы между двумя списками. Если между двумя списками имеется одинаковая буква, равная одному индексу, она удаляет как букву между ними, так и аналогичную букву. Тем не менее, код не работает, если аналогичная буква является последней позицией в списке.
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)
Кто-нибудь знает, что является причиной проблемы и как ее исправить?