Вы можете выбирать то, что вы хотите с помощью встроенного filter метода:
>>> filter(lambda s: s[1] in y, x)
[['What if?', '2014', 'Randall Munroe'], ['Thing Explainer', '2015', 'Randall Munroe'], ['Alan Turing: The Enigma', '2014', 'Andrew Hodge']]
Что он делает:
Он перебирает каждый список из вашего x
списка и проверить, если второй элемент каждого подсписок находится в y[1]
, используя функцию lambda
Edit:
Приведенный выше код будет работать, если вы уверены, что даты в каждом суб списке x
сохранить тот же индекс, что s[1]
,
Но в случае, вы не можете гарантировать, что, то я предпочитаю следующий код (Я добавил другой элемент x
с различными индексами Дата:
>>> z = [['Godel Escher Bach', '1979', 'Douglas Hofstadter'], ['What if?', '2014', 'Randall Munroe'], ['Thing Explainer', '2015', 'Randall Munroe'], ['Alan Turing: The Enigma', '2014', 'Andrew Hodge'],['2015','Thing Explainer', 'Randall Munroe'], ['Alan Turing: The Enigma', 'Andrew Hodge','2014']]
>>>
>>>
>>> filter(lambda s: set(s).intersection(y), z)
[['What if?', '2014', 'Randall Munroe'], ['Thing Explainer', '2015', 'Randall Munroe'], ['Alan Turing: The Enigma', '2014', 'Andrew Hodge'], ['2015', 'Thing Explainer', 'Randall Munroe'], ['Alan Turing: The Enigma', 'Andrew Hodge', '2014']]
скажите мне, нужно ли что-то прояснить. – Sbioer
Каков ожидаемый результат для данного списка? – falsetru
[[«Что если?», «2014», «Рэндалл Мунро»], [«Пояснение», «2015», «Рэндалл Мунро»], [«Алан Тьюринг: Энигма», «2014», «Андрей Hodge ']] – Sbioer