Сравнение двух списков разного размера и возврата bool-list - PullRequest
0 голосов
/ 26 марта 2020

Допустим, у нас есть два списка:

Размер (15)

list1 = [1012, 1017, 1037, 1057, ... , 1068]

Размер (455)

list2 = [1029, 1049, 1012, 1117 ... , 1057]

Как я могу вернуть новый список Размер (15) с логическими значениями, если элемент в списке list1 находится в списке list2?
В списке list есть несколько элементов несколько раз, в списке list каждый элемент отображается только один раз.

Результат должен выглядеть следующим образом: Size ( 15)

list_result = [True, False, False, True, ... , False]

1 Ответ

5 голосов
/ 26 марта 2020

Вы можете сделать это с помощью простого понимания списка. Так как вам нужно использовать in n раз, n - len(list1), вы можете использовать set, чтобы уменьшить сложность поиска до O(1), имея общую сложность O(n):

list1 = [1012, 1017, 1037, 1057 , 1068]
set2 = set([1029, 1049, 1012, 1117,1057])

[i in set2 for i in list1]
# [True, False, False, True, False]
...