Сравнение двух списков с сохранением дубликатов, но удаление одинаковых элементов в индексированных позициях в Python - PullRequest
3 голосов
/ 04 мая 2020

У меня есть два списка:

List1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
List2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']

Списки имеют одинаковый размер.

Что я хочу, чтобы сопоставить list1 с list2 по индексам и удалите соответствующие элементы в списке list2, если соответствующий индексированный элемент совпадает. В противном случае он не должен удалять предметы. Дубликаты могут существовать в неиндексированных позициях в Newlist2.

Это то, что я ожидаю:

List1:#Same as the previous

NewList2 = ['Nine', 'Seven', 'Five', 'Three', 'One']

Ответы [ 3 ]

3 голосов
/ 04 мая 2020
NewList2 = [ y for (x, y) in zip(List1, List2) if x != y ] 
2 голосов
/ 04 мая 2020

Вы можете сделать

ls1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
ls2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']
new_list = [v for i , v in enumerate(ls2) if v != ls1[i]]

Вывод

['Nine', 'Seven', 'Five', 'Three', 'One']
2 голосов
/ 04 мая 2020

с использованием списка и почтового индекса:

list1 = ['One', 'Two', 'Three', 'Five', 'Seven', 'Ten', ' Two', 'One'] 
list2 = ['Nine', 'Two', 'Seven', 'Five' , 'Five', 'Three',  'One', 'One']

new_list = [ele2 for ele1, ele2 in zip(list1, list2) if ele1 != ele2]
print(new_list)

вывод ['Nine', 'Seven', 'Five', 'Three', 'One']

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