Как мне создать x количество списков / наборов, которые я могу позже добавить вместе? - PullRequest
0 голосов
/ 04 июня 2019

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

Мой вопрос заключается в том, как мне создать x количество наборов сy количество значений в нем.

я хочу рандомизировать этот тип данных, есть x наборов наборов с y1 и y2 "именами" Пример:

    x=5
    y1=2
    y2=4
    ["1","2","3"]
    ["6","1","2"]
    ["9","7","4","0"]
    ["6","8","1"]
    ["1","5"]

Есть 5 наборовнаборов с 2 и 4 "именами"

Тогда мне нужно иметь возможность соединить два набора, если одно значение находится в нескольких наборах, в этом случае это будет выглядеть примерно так:

    ["1","2","3","6","8","5"]
    ["9","7","4","0"]

1 Ответ

0 голосов
/ 04 июня 2019

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

import random

# make a single set of random numbers in [0, 10), with number of elements in [y1, y2]
random_set = set(random.sample(range(10), random.randint(y1, y2)))

# make x sets of them
random_sets = [set(random.sample(range(10), random.randint(y1, y2))) for _ in range(x)]

# merge sets containing a given element
def merge_sets(list_of_sets, elem):
    # create an empty set
    elem_set = set()
    for s in list_of_sets:
        # go through all the sets in the list, and if those sets contain the 
        # element we're looking for, merge them into the new set
        if elem in s:
            elem_set |= s
    # return the list of new set plus those sets that didn't contain our element
    return [elem_set] + [s for s in list_of_sets if elem not in s]
...