为何is_greater函数判定the_greater_list为None而非list类型?如何解决?
问题分析与解决方案
你的代码里有两个关键错误导致the_greater_list被判定为None:
列表初始化语法错误
你用list(the_greater_list = [])创建列表是完全错误的写法,正确的列表初始化应该直接赋值:the_greater_list = []append方法的使用误区
list.append()是原地修改列表的方法,它的返回值是None。你写的the_greater_list = the_greater_list.append(number)会把None赋值给变量,第一次执行后the_greater_list就变成了None,后续操作自然失效。正确的写法是直接调用append,不需要赋值:the_greater_list.append(number)
修正后的完整代码:
def is_greater(my_list, n): """筛选列表中大于等于n的元素 :param my_list: 待筛选的列表 :param n: 筛选阈值 :type my_list: list :type n: int :return: 筛选后的列表 :rtype: list """ the_greater_list = [] for number in my_list: if number >= n: the_greater_list.append(number) return the_greater_list list1 = [1, 30, 25, 60, 27, 28] N = 28 print(is_greater(list1, N)) # 输出: [30, 60, 28]
另外,Python里可以用列表推导式让代码更简洁高效,等价写法:
def is_greater(my_list, n): """筛选列表中大于等于n的元素 :param my_list: 待筛选的列表 :param n: 筛选阈值 :type my_list: list :type n: int :return: 筛选后的列表 :rtype: list """ return [number for number in my_list if number >= n]
内容的提问来源于stack exchange,提问作者user20315313
相关产品推荐
相关产品推荐

