У меня проблема со списком в Python. индекс списка вне диапазона - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь удалить слова из одного списка, которые появляются в другом. Затем я должен скопировать те, которые не повторяются в третьем списке. Когда я делаю сравнение, у меня возникает проблема с индексом списка

Язык Python, последняя версия.

listOne = ['Hello','Every','One','Here']                       
listTwo = ['Every','Here','Hi','Nice']
listThree = []

for i in range(len(listOne)):
    for j in range(len(listTwo)):
       if listOne[i] == listTwo[j]: # <-- error here
            listOne.remove(listOne[i])

 #Here is the problem
 if listOne[i] == listTwo[j]]: 
 IndexError: list index out of range

Я хочу знать, почему это происходит.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2019

Использовать понимание списка:

listThree = [i for i in listOne if i not in listTwo]
0 голосов
/ 28 апреля 2019

Вы можете использовать наборы для сравнения списков и удаления дубликатов

>>> listOne = ['Hello','Hello','Every','One','Here']
>>> listTwo = ['Every','Here','Hi','Nice']
>>> listThree = list( set(listOne) - set(listTwo) )
>>> listThree
['Hello', 'One']
0 голосов
/ 28 апреля 2019

Вы можете использовать выражения списка для заполнения list3, а также цикл for и оператор in для первого требования:

listOne = ['Hello','Every','One','Here']                       
listTwo = ['Every','Here','Hi','Nice']
listThree = [word for word in listOne if not(word in listTwo)]

for word in [word for word in listOne if word in listTwo]:
    listOne.remove(word)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...