Kom igångKom igång gratis

Kontrollera om det finns självloopar i grafen

Som Eric nämnde tillåter NetworkX även kanter som börjar och slutar på samma nod. Det kan verka ovanligt för ett socialt nätverks graf, men det är användbart för att modellera data som ressnätverk, där individer börjar på en plats och slutar på en annan.

Det är bra att kontrollera detta innan du fortsätter med vidare analyser. NetworkX erbjuder en metod för detta ändamål: nx.number_of_selfloops(G).

I den här övningen, liksom i senare övningar, kommer du att ha nytta av assert-satsen. En assert-ion kontrollerar om uttrycket som följer efter den utvärderas till True – annars genereras ett AssertionError.

Börja med att anropa funktionen nx.number_of_selfloops() med T som argument i IPython Shell, för att se hur många kanter som börjar och slutar på samma nod. Ett antal självloopar har lagts till i grafen på konstgjord väg. Din uppgift i den här övningen är att skriva en funktion som returnerar dessa kanter.

Den här övningen är en del av kursen

Introduktion till nätverksanalys i Python

Visa kurs

Övningsinstruktioner

  • Definiera en funktion som heter find_selfloop_nodes() och som tar ett argument: G.
    • Använd en for-loop för att iterera över alla kanter i G (exklusive metadata).
    • Om nod u är lika med nod v:
      • Lägg till u i listan nodes_in_selfloops.
      • Returnera listan nodes_in_selfloops.
  • Kontrollera att antalet självloopar i grafen är lika med antalet noder i självloopar. Det här steget är redan gjort åt dig – klicka på Skicka in svar för att se resultatet!

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Define find_selfloop_nodes()
def ____:
    """
    Finds all nodes that have self-loops in the graph G.
    """
    nodes_in_selfloops = []

    # Iterate over all the edges of G
    for u, v in ____:

    # Check if node u and node v are the same
        if ____:

            # Append node u to nodes_in_selfloops
            ____

    return nodes_in_selfloops

# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))
Redigera och kör kod