I как пересечь диапазон столбцов между двумя горизонтальными списками?

#python #list #intersection

#python #Список #пересечение

Вопрос:

В коде, который я пишу, мне нужно пересечь два горизонтальных списка, например:

Список:

 ('name1','chr1', 'aatt')
('name2','chr11', 'aaga')
('name2','chr11', 'aaaa')
('name3','chr7', 'gtag')
  

listB

 ('chr8', 'tagt')
('chr1', 'tttt')
('chr7', 'gtag')
('chr11','aaaa')
('chr9', 'atat')

#This lists are compounded by one str per line, wich it has a "/t" in the middle. 
#Also note that are in different order
  

Как я могу получить строки из списка, столбцы 2 и 3 которого пересекаются со списком B?

желаемый результат:

 name2   chr11   aaaa
name3   chr7    gtag
  

Решение заключается не просто в «set (listA) amp; set (listB)», потому что в списке разное количество столбцов

спасибо за ваше время!

Ответ №1:

 set_b = set(list_b)
result = [x for x in list_a if (x[1], x[2]) in set_b]
  

Комментарии:

1. затем распечатать результат так, как я хочу… для c1, c2, c3 в результате: выведите c1, c2, c3… я прав?