检查图中是否存在自环
正如 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))