Nano Hash - криптовалюты, майнинг, программирование

Как пересекать множество множеств

У меня есть наборы

{1, 2, 3, 4}
{2, 3, 4, 5}
{3, 4, 5, 6}
{4, 5, 6, 7}
{5, 6, 7, 8} 

Мне нужно пересечь наборы, начиная с первого. Я имею в виду, что я должен пересечь

{1, 2, 3, 4}
{2, 3, 4, 5}
{3, 4, 5, 6}

следующий

{2, 3, 4, 5}
{3, 4, 5, 6}
{4, 5, 6, 7}

и

{3, 4, 5, 6}
{4, 5, 6, 7}
{5, 6, 7, 8}

Как я могу сделать это в цикле? Я знаю, что могу использовать set1 & set2 & set3, но не знаю, как это сделать со следующим set2 & set3 & set4 и т. Д.?

26.05.2016

  • Я не понимаю, что именно вы имеете в виду? Находятся ли эти наборы внутри списка? 26.05.2016

Ответы:


1

Сначала вам нужны все ваши наборы в списке, затем выполните итерацию по списку параллельно с zip-функцией:

sets = [
    {1, 2, 3, 4},
    {2, 3, 4, 5},
    {3, 4, 5, 6},
    {4, 5, 6, 7},
    {5, 6, 7, 8},
]

for s1, s2, s3 in zip(sets, sets[1:], sets[2:]):
    print(s1 & s2 & s3)

или более общий:

AMOUNT_OF_SETS_TO_INTERSECT = 3
for sets_to_intersect in zip(*(sets[i:] for i in range(AMOUNT_OF_SETS_TO_INTERSECT))):
    print(set.intersection(*sets_to_intersect))
26.05.2016
  • Но если у меня есть 60 наборов, как я могу это сделать? 26.05.2016
  • 60 наборов для пересечения? 26.05.2016
  • У меня 60 наборов, и я хочу пересекать каждые 3 набора: set1 & set2 & set3, set2 & set3 & set4, set3 & set4 & set5, ... 26.05.2016
  • Итак, у вас есть список sets с 60 записями. В чем проблема? 26.05.2016
  • Я должен использовать sets[1:], sets[2:], sets[3:] и т. Д.? Есть ли способ сделать его более читаемым? 26.05.2016
  • Вы должны повторить свой список три раза параллельно, с разными начальными элементами; это наиболее читаемый способ. 26.05.2016

  • 2

    Если вы хотите найти способы пересечения нескольких наборов, тогда на этой странице есть ответ, который в основном говорит вам использовать _ 1_ функция

    Если вы не знаете, как поместить свои наборы в список, а затем пройти по нему, это другой вопрос, это базовый Python.

    В Python вы можете помещать объекты (включая наборы) внутри списка и перемещаться по нему следующим образом:

    # Build the list of sets
    set_list = []
    for i in range(1, 6):
        set_list.append(set([i, i+1, i+2, i+3]))
    
    # Now set_list contains the set (1,2,3,4), (2,3,4,5), ..., (5,6,7,8)
    
    # Traverse and do set intersection
    for i in range(len(set_list)-2):
        intersection = set.intersection(set_list[i], set_list[i+1], set_list[i+2])
        print(intersection)
    
    # Will print:
    # set([3, 4])
    # set([4, 5])
    # set([5, 6])
    
    26.05.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..