• Как найти несколько подмножеств одного надмножества в python?

    i229194964
    @i229194964
    Веб разработчик
    для этой задачи можно использовать алгоритм пересечения множеств .
    sets = [['/img0.jpg '],
            ['/img1.jpg'],
            ['/img10.jpg'],
            ['/img11.jpg', '/img9.jpg'],
            ['/img12.jpg', '/img15.jpg'],
            ['/img11.jpg', '/img13.jpg', '/img8.jpg', '/img9.jpg'],
            ['/img14.jpg'],
            ['/img15.jpg'],
            ['/img16.jpg'],
            ['/img14.jpg', '/img17.jpg'],
            ['/img18.jpg'],
            ['/img19.jpg', '/img22.jpg'],
            ['/img2.jpg'],
            ['/img19.jpg', '/img20.jpg', '/img21.jpg', '/img22.jpg'],
            ['/img19.jpg', '/img21.jpg', '/img22.jpg'],
            ['/img22.jpg'],
            ['/img23.jpg'],
            ['/img3.jpg'],
            ['/img3.jpg', '/img4.jpg'],
            ['/img0.jpg', '/img5.jpg'],
            ['/img6.jpg'],
            ['/img2.jpg', '/img7.jpg'],
            ['/img11.jpg', '/img8.jpg', '/img9.jpg'],
            ['/img9.jpg']]
    
    super_set = set(sets[0]) # берем первое подмножество
    
    # последовательно вычисляем пересечения супермножества с каждым из подмножеств
    for s in sets[1:]:
        super_set = super_set.intersection(set(s))
    
    # удаляем из супермножества все элементы, которые не принадлежат пересечению
    for s in sets:
        super_set.difference_update(set(s) - super_set)
    
    # оставшиеся элементы супермножества и будут искомым результатом
    result = sorted(list(super_set))
    print(result)
    Ответ написан
    Комментировать