У меня есть функция с 4 аргументами, я хочу повторить эту функцию 10 раз и использовать этот счетчик в качестве аргумента для функции. вот функция, которую я хочу повторить:
np.random.seed(1)
def propagate ( seed , network , threshold , steps ):
"" "Start cascade from node` seed` of network `net`." ""
activated = [ seed ]
pocket = [ seed ]
exposition = {}
time = 0
while time < steps :
time += 1
# propagate
for seed in pocket :
for out_node in network . successors( seed ):
add_weight = network [ seed ] [ out_node ] [ "weight" ]
if out_node not in activated :
if out_node in exposition :
exposition [ out_node ] += add_weight
else :
exposition [ out_node ] = add_weight
# activate
pocket = []
for node , total in exposition .items ():
if total = threshold :
pocket . append ( node )
activated += pocket [:]
for node in pocket :
del exposition [ node ]
return len ( activated )z
Я хочу выбрать 10 узлов, сеть представляет собой сохраненный граф, повторять (аргумент - шаги) его 5 раз, иметь пороговые значения от 1 до 5 и вычислять среднее количество активированных узлов. вот что я пробовал. это не так много, но я тоже не понимаю, как это должно работать.
act_nodes=[]
for i in range(1,5):
propagate(1,B,5,i)
act_nodes.append(propagate)
Вы должны добавить результат своей функции:
act_nodes=[]
for i in range(1,5):
x=propagate(1,B,5,i)
act_nodes.append(x)
«активировано» объявлено внутри функции и не живет вне ее, что является ошибкой для. Кроме того, почему вы зацикливаетесь в диапазоне (1,5)? Это будет выполняться 4 раза, но вы сказали, что вам нужно 10?
@ Чай Да, точно
Вот черт! не могли бы вы рассказать мне, что случилось с вами сделал x=? он сохранил вывод в x и добавил в список?