Python邻接表筛选至少n条边顶点及friend函数错误排查
问题2:排查friend函数的错误
你的代码存在两个核心问题:
- 判断逻辑错误:你写的
my_class[j][n] >= n是在取第j个人员的第n个好友元素,这和“好友数量”完全无关。正确的判断应该是该人员的好友列表长度,也就是len(my_class[j]) >= n。 - 提前返回导致结果不全:你的循环中只要找到第一个符合条件的元素就直接
return my_class[j],这只会返回第一个满足条件的好友列表,而不是所有符合要求的人员编号列表。我们需要收集所有符合条件的编号,最后统一返回。
修正后的代码可以这样写:
my_class = [[1,2,3],[0,3],[0,4],[0,1],[2]] def friend(my_class, n): qualified_people = [] # 遍历每个人员的编号和对应的好友列表 for person_id, friends in enumerate(my_class): if len(friends) >= n: qualified_people.append(person_id) return qualified_people # 测试调用 print(friend(my_class, 2)) # 输出:[0,1,2,3]
如果想更简洁,也可以用列表推导式一行搞定:
def friend(my_class, n): return [person_id for person_id, friends in enumerate(my_class) if len(friends) >= n]
这样调用friend(my_class, 2)就会返回你预期的[0,1,2,3],如果没有符合条件的人员,函数会返回空列表,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Hannahpham
相关产品推荐
相关产品推荐

