общие элементы в двух списках python

Вопрос: У меня есть два списка python, сгенерированные из двух разных таблиц базы данных list1= ["'HZ1398043','HZ1395693','HZ1395532','HZ1395240','HZ1395194','HZ1395113','HZ1395036','HZ1395236','HZ1396139','HZ1398028','HZ1395098','HZ1395998','HZ1395018','HZ1395829','HZ1398031','HZ1395708','HZ1398029','HZ1398030','HZ1398054''"] list2= ['', '', '', '', '', 'HZ1395018', 'HZ1395036', 'HZ1395098', 'HZ1395113', 'HZ1395194', 'HZ1395236', 'HZ1395240', 'HZ1395532', 'HZ1395693', 'HZ1395708', 'HZ1395829', 'HZ1395998', 'HZ1396139', 'HZ1398028', 'HZ1398029', 'HZ1398031', 'HZ1398043', 'HZ1397932', 'HZ1397949', 'HZ1398004', 'HZ1398021', 'HZ1398030', 'HZ1397940', 'HZ1397941', 'HZ1398010',', '', ''] Мне нужно найти общие элементы между

Вопрос:

У меня есть два списка python, сгенерированные из двух разных таблиц базы данных

list1= [«‘HZ1398043′,’HZ1395693′,’HZ1395532′,’HZ1395240′,’HZ1395194′,’HZ1395113′,’HZ1395036′,’HZ1395236′,’HZ1396139′,’HZ1398028′,’HZ1395098′,’HZ1395998′,’HZ1395018′,’HZ1395829′,’HZ1398031′,’HZ1395708′,’HZ1398029′,’HZ1398030’,’HZ1398054»»] list2= [», », », », », ‘HZ1395018’, ‘HZ1395036’, ‘HZ1395098’, ‘HZ1395113’, ‘HZ1395194’, ‘HZ1395236’, ‘HZ1395240’, ‘HZ1395532’, ‘HZ1395693’, ‘HZ1395708’, ‘HZ1395829’, ‘HZ1395998’, ‘HZ1396139’, ‘HZ1398028’, ‘HZ1398029’, ‘HZ1398031’, ‘HZ1398043’, ‘HZ1397932’, ‘HZ1397949’, ‘HZ1398004’, ‘HZ1398021’, ‘HZ1398030’, ‘HZ1397940’, ‘HZ1397941’, ‘HZ1398010′,’, », »]

Мне нужно найти общие элементы между двумя

set(list1) & set(list2)

ничего не отображает

даже [i for я in list1 if я in list2] ничего не отображает. Я четко вижу, что HZ1398043 распространен.

Лучший ответ:

Посмотрите внимательно, ваш первый список на самом деле является списком с одним элементом, большой строкой.

>>> list1= [«‘HZ1398043′,’HZ1395693′,’HZ1395532′,’HZ1395240′,’HZ1395194′,’HZ1395113′,’HZ1395036′,’HZ1395236′,’HZ1396139′,’HZ1398028′,’HZ1395098′,’HZ1395998′,’HZ1395018′,’HZ1395829′,’HZ1398031′,’HZ1395708′,’HZ1398029′,’HZ1398030’,’HZ1398054»»] >>> len(list1) 1

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

Вы хотите сделать что-то вроде list1 = [item.strip(«‘») for item in list1[0].split(«,»)] чтобы получить фактический список (простое понимание списка), затем используйте один из ваших методы (метод set является наиболее эффективным, хотя, если вы хотите, чтобы дубликаты и порядок сохранялись, вам нужно будет сделать второй метод, хотя вы можете его улучшить, предварительно сделав набор list2 чтобы проверить наличие членства в).

Ответ №1def compare(list1,list2): ln= [] for i in list1: if i in list2: ln.append(i) return ln

печать (сравни (песни1, песни2))

не оптимизировать, но легко понять.

Ответ №2

Сначала вам нужно сделать правильный список из списка1, это можно сделать с помощью чего-то вроде:

list1 = [item.strip(«‘») for item in list1[0].split(«,»)]

Тогда ваш код должен работать нормально. Альтернативный (более компактный, но медленный) способ найти общие элементы:

common = filter(lambda x:x in list1,list2) Ответ №3

Это то, чем они должны быть:

list1= [‘HZ1398043′,’HZ1395693′,’HZ1395532′,’HZ1395240′,’HZ1395194′,’HZ1395113′,’HZ1395036′,’HZ1395236′,’HZ1396139′,’HZ1398028′,’HZ1395098′,’HZ1395998′,’HZ1395018′,’HZ1395829′,’HZ1398031′,’HZ1395708′,’HZ1398029′,’HZ1398030′,’HZ1398054’] list2= [», », », », », ‘HZ1395018’, ‘HZ1395036’, ‘HZ1395098’, ‘HZ1395113’, ‘HZ1395194’, ‘HZ1395236’, ‘HZ1395240’, ‘HZ1395532’, ‘HZ1395693’, ‘HZ1395708’, ‘HZ1395829’, ‘HZ1395998’, ‘HZ1396139’, ‘HZ1398028’, ‘HZ1398029’, ‘HZ1398031’, ‘HZ1398043’, ‘HZ1397932’, ‘HZ1397949’, ‘HZ1398004’, ‘HZ1398021’, ‘HZ1398030’, ‘HZ1397940’, ‘HZ1397941’, ‘HZ1398010’,», », »]

Ваш код работает после того, как вы их исправите.

Оцените статью
Добавить комментарий