#python #list #loops
Вопрос:
Я пытаюсь объединить 2 списка с помощью оператора И следующим образом:
testlist1 = inverted_index['amsterdam'] testlist2 = inverted_index['utrecht'] merged_testlist = [] for i in testlist1: for index in testlist2: if i in testlist1 and i in testlist2 and i not in merged_testlist: merged_testlist.append(i) print(merged_testlist)
оба списка составлены из списка int, testlist1 выглядит следующим образом: [9756244, 16916567, 21859206, 25186285, 26784347, 29218587, 29406610, 33741990]
результат, который я получаю из своего кода, — пустой список. Как мне выполнить итерацию по обоим спискам, посмотреть, какие индексы находятся в обоих списках, используя оператор AND, и добавить их в мой пустой список merge_test?
Комментарии:
1. Во-первых,
i in testlist1
это всегда правда. Если вы хотите предотвратить дубликаты, используйте набор, который затем можно удалитьi not in merged_testlist
… Итак, теперь объясните, чтоi in testlist2
предполагается проверить?2. Выполните итерацию по одному списку (только). Для каждого элемента в этом списке посмотрите, есть ли он во 2-м списке. Если это так, добавьте его в свой список результатов. Или используйте
list(set(a) amp; set(b))
для (списка) пересечения списков a и b.
Ответ №1:
Вы можете использовать set
и intersection
для этого.
testlist1 = inverted_index['amsterdam'] testlist2 = inverted_index['utrecht'] merged_testlist = list(set(testlist1).intersection(set(testlist2)) print(merged_testlist)