Попытка получить минимальное значение для функции в цикле при передаче значений из списка A в список B - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь получить нормализованную стоимость сокращения для вопроса обнаружения сообщества.и ниже мой вопрос: есть два списка узлов A и B;обе длины равны 20, и в networkx есть функция nx.normalized_cut_size, которая будет возвращать значение для нормализованного размера среза в двух списках выше и на сетевом графике (исправлено в этом вопросе).

Итак, я хочунайти наилучшую комбинацию для списков A и B, передав один узел другому, пока не достигнет минимального нормализованного значения размера среза.Я пытаюсь использовать .append и .remove внутри цикла, и я все еще думаю, что есть лучший способ.Может кто-нибудь помочь?

largest = sorted(largest)## sort
lo = largest[:20]## lowest 50 % nodes
hi = largest[20:] ## highest 50% nodes

for i in lo:
    hi.append(i)
    lo.remove(i)
    print nx.normalized_cut_size(Gc,hi,lo)/2

1 Ответ

0 голосов
/ 24 октября 2018

Вам не нужно проходить всю передачу: просто используйте нужные вам кусочки:

for i in range(20):
    print nx.normalized_cut_size(Gc, largest[20-i:], largest[:20-i])

Я оставлю для вас проблему «один на один» и граничные проблемы для проверки.


Минимум последовательности: оберните их в понимание списка и примените min к списку.

print min([ nx.normalized_cut_size(Gc, largest[20-i:], largest[:20-i])
             for i in range(20) ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...