开始使用免费开始使用

检查图中是否存在自环

正如 Eric 所讨论的,NetworkX 也允许边同时起点和终点在同一节点上;这在社交网络图中不太直观,但在建模旅行网络等数据时很有用,因为个体可能从一个位置出发并在另一个位置结束。

在继续深入分析之前,先检查这一点是有用的。NetworkX 为此提供了一个方法:nx.number_of_selfloops(G)

在本练习以及后续练习中,assert 语句会很有用。assert 会检查其后面的表达式是否为 True,否则会抛出 AssertionError

首先,请在 IPython Shell 中调用 nx.number_of_selfloops() 函数,并传入 T,以获得起点和终点相同的边的数量。我们已向图中合成地加入了一些自环。您在本练习中的任务是编写一个函数,返回这些边。

本练习是课程的一部分

Python 网络分析入门

查看课程

练习说明

  • 定义一个名为 find_selfloop_nodes() 的函数,接收一个参数:G
    • 使用 for 循环,遍历 G 中的所有边(不包括元数据)。
    • 若节点 u 等于节点 v
      • u 追加到列表 nodes_in_selfloops
      • 返回列表 nodes_in_selfloops
  • 检查图中的自环数量是否等于存在自环的节点数量。此步骤已为您完成,点击 "提交答案" 查看结果!

交互式实操练习

通过完成这段示例代码来试试这个练习。

# 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))
编辑并运行代码