如何实现筛选列表中大于5的数字的Python函数?
问题修正与解决
你的代码存在两个核心问题:
- 错误遍历了外层列表的索引而非子列表本身,还错误判断索引是否大于5,完全偏离了过滤子列表元素的需求
- 没有对每个子列表内部的元素进行遍历和筛选,无法得到每个子列表的过滤结果
另外你提到append返回None的问题:append是原地修改列表的方法,它的返回值就是None,所以只需直接调用列表.append(元素)即可,不要把它的返回值赋值给变量。
修正后的嵌套循环实现
lst = [[0, 1, 5, 6, 9], [5, 5, 5, 5], [42, 1337], [-100, 100]] def more_than_five(lst): result = [] # 遍历外层列表的每个子列表 for sublist in lst: filtered_sublist = [] # 遍历当前子列表的每个数字 for num in sublist: # 筛选大于5的数字 if num > 5: filtered_sublist.append(num) # 将筛选后的子列表加入结果列表 result.append(filtered_sublist) return result # 调用函数并逐个输出子列表 filtered_result = more_than_five(lst) for sub in filtered_result: print(sub)
更简洁的列表推导式实现
Python的列表推导式可以用一行完成嵌套筛选,代码更简洁:
lst = [[0, 1, 5, 6, 9], [5, 5, 5, 5], [42, 1337], [-100, 100]] def more_than_five(lst): return [[num for num in sublist if num > 5] for sublist in lst] filtered_result = more_than_five(lst) for sub in filtered_result: print(sub)
运行结果
执行后会输出:
[6, 9] [] [42, 1337] [100]
内容的提问来源于stack exchange,提问作者Ace
相关产品推荐
相关产品推荐

