Python 3.X:使用整数列表和值实现returnGreater()函数

问题描述:

该函数必须返回一个列表,其中包含大于函数中第二个数字的数字 它在执行功能时必须能够执行以下操作:Python 3.X:使用整数列表和值实现returnGreater()函数

returnGreater([1,2,3,4,5], 3) 
[4,5] 

returnGreater([-8,2,-4,1,3,-5],3) 
[] 

这是我有什么(我已经经历几次反复走了),但我得到一个类型错误的尝试使用int和列表之间的“>”符号:

def returnGreater (x,y): 
    "x:list(int) , return:list(int)" 
    #greater: int 
    greater = [] 
    for y in x: 
     #x: int 
     if x > y: 
      x = greater 
    return greater 
+0

什么是你的问题?你似乎明白错误。 '如果x> y:'如果'x'是一个列表,'没有意义。 – Carcigenicate

+0

这可以用'filter'来完成。 – Carcigenicate

+0

我必须做到没有过滤器 – JorSAP

您使用的名称为y两种不同nt在你的代码中的东西。它既是一个参数(要比较的数字)又是循环变量。你应该为其中的一个使用不同的名称。

我强烈建议挑选有意义的名称,因为这将使每个变量的含义变得更加清晰,并且使得它更不可能在两个不同的东西中使用相同的名称。举例来说,这里就是我会命名变量(摆脱这两个xy的):

def returnGreater(list_of_numbers, threshold): 
    greater = [] 
    for item in list_of_numbers: 
     if item > threshold: 
      greater.append(item) 
    return greater 

您曾与线x = greater,这并没有做什么有用的另一个问题(它取代了参考原始列表与向空greater列表的引用,你应该append荷兰国际集团的项目你只是相比greater列表,而不是。

我建议filter简单而优雅的方式。

def returnGreater(x, y): 
    return list(filter(lambda a:a>y, x)) 

表示使用lambda筛选列表中的每个元素ax是否a是否大于y

List Comprehensions

def returnGreater(_list, value): 
    return [x for x in _list if x > value]