У меня есть кортеж кортежей и кортеж. Мне интересно знать, какие элементы первого кортежа соответствуют второму кортежу (если есть), учитывая также частичные совпадения.
Это функция фильтра, чтобы продемонстрировать, что я имею в виду.
def f(repo):
pattern = (None, None, '1.3')
for idx, item in enumerate(pattern):
if item != None and item != repo[idx]:
return False
return True
>>> repo = (('framework', 'django', '1.3'), ('cms', 'fein', '1.3'), ('cms', 'django-cms', '2.2'))
>>> filter(f, repo)
(('framework', 'django', '1.3'), ('cms', 'fein', '1.3'))
Фильтр в этой форме бесполезен, поскольку шаблон не может быть предоставлен извне в качестве аргумента (я хочу использовать одну и ту же функцию для проверки разных входных данных). Есть ли способ это исправить?
И что может быть еще одним алгоритмом для лучшего подхода к исходной проблеме?