#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… я прав?