как объединить 2 списка строк с помощью оператора и

#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)