Есть ли определенный рецепт для разбиения списка в соответствии с некоторым предикатом? То, что я хочу сделать, похоже на группу itertools, но предикат будет некоторой произвольно сложной функцией (а не просто ключом). Например, представьте себе список студентов, и у каждого ученика есть список курсов, и я хочу сгруппировать по тем, у кого есть общие курсы. Так что это было бы что-то вроде:У python есть функция partition_by?
def coursework_intersection(a,b):
return set(a['courses']).intersection(b['courses'])
list_of_lists = partition_by(coursework_intersection, students)
Я не думаю, что эта функция написана на Python сама по себе, но не должно быть слишком сложно сделать ... Предполагая, что вы делаете «ученик» классом. – KnightOfNi
Ваш вопрос для меня не имеет смысла. Предикат - это функция, возвращающая логическое значение. Таким образом, ваша функция не является предикатом! Можете ли вы привести пример ввода/ожидаемого вывода? – hivert
возвращает true-y или false-y в зависимости от того, установлено ли пересечение или нет. пустое множество - false-y. – Kevin