У меня есть b
ведра 0 .... b-1 и m
яблоки 0 .... м-1. В начале все яблоки помещаются в ведро 0.Перегородка набора в питоне
Затем, после некоторого анализа, яблоки перемещаются между ведрами. Я уже реализовал это, имея 2D-список (как ведра), в котором идентификаторы apple удаляются и добавляются, когда им нужно перемещать между ведрами. Это, однако, очень неэффективно для моего анализа, поскольку эти движения находятся в порядке миллионов или миллиардов. Итак, мне было интересно, есть ли лучшее решение для реализации такой структуры?
Кстати, название было выбрано так, как это очень похоже на разделы заданной проблемы, в которых ни один член не может быть помещен в более чем 1 подмножество. Здесь также пример с 4 яблок и 3 ведра, чтобы сделать его более ясным:
time 0:
a=[[0,1,2,3],[],[]]
time 1: (say apple 3 needs to be moved to bucket 2)
a=[[0,1,2],[],[3]]
'[False for _ in range (m)]' overkill. Для неизменяемых объектов вы можете сделать '[False] * m'. Использование 'bitarray' - очень хорошая идея. –
@ Jean-FrançoisFabre: спасибо за предложение. –
приветствуется (это было незначительно). Я взял на себя смелость слегка отредактировать ваше сообщение BTW. Удалено "(с наборами)" и исправлено "beter" до "better". Многое было так: –