kolumbou
@kolumbou
python, html, c#

Как более быстро вывести разницу двух списков?

Имеется два списка

list1 = ['1111', '2222', '3333', '4444']
list2 = ['1111', '4444']


Эти два списка в реальности должны составлять более чем 10 тысяч значений.

Необходимо найти разницу из этих двух списков и занести в третий.

Сейчас используется следующий далеко не идеальный подход:

list3 = []

for i in list1:
    if i not in list2:
        list3.append(i)


При небольших объемах значений в списках этот подход работает вполне терпимо исходя из времени.
Но когда значения подойдут к большому количеству, этот перебор будет занимать некоторое время.

Как ускорить процесс нахождения разницы в списках?

Посоветовали использовать operator.sub:

>>> A = [3, 4, 6, 7]
>>> B = [1, 3, 6, 3]
>>> list(map(operator.sub, A, B))
[2, 1, 0, 4]


... но как я это понимаю, он делает не совсем то что нужно. А именно, просто вычитает значения, что в моем случае совершенно не подходит. Или, возможно, есть способ его использовать в моем ключе, о котором я еще не догадываюсь.

Буду благодарен за любые советы.
  • Вопрос задан
  • 2270 просмотров
Решения вопроса 2
kentuck1213
@kentuck1213
list1 = ['1111', '2222', '3333', '4444']
list2 = ['1111', '4444']
set(list1) - set(list2)
{'3333', '2222'} #вывод
Ответ написан
Комментировать
list1 = [x for x in range(1, 20000)]
list2 = [x for x in range(1, 10000)]
set.difference(set(list1), set(list2))

Отрабатывает мгновенно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы