从python中的另一个列表构造一个列表

时间:2015-03-29 11:53:09

标签: python list

我需要写一个all_gt(nums, n)的函数,其中 nums 是一个数字列表, n 是一个数字,返回 nums 大于 n 。应保留元素的顺序。

我需要做的是以.append格式写入,然后将结果初始化为空列表。

例如:

all_gt([1,2,3,4],4) => [] 
all_gt([2,3,4,5], 3) => [4,5]

这就是我所拥有的:

def all_gt(nums, n):
    for i in nums:
        if i > n:
            return nums.append(i)

我知道我所做的是错的,我希望有人可以帮助我解决这个问题。

3 个答案:

答案 0 :(得分:2)

你的错误

return nums.append(i)将值附加到列表中并返回None。解决方法可以是

def all_gt(nums, n):
    num2 = []
    for i in nums:
        if i > n:
            num2.append(i)
    return num2

更好的方式

您可以使用列表理解

def all_gt(nums, n):
    return [i for i in nums if i > n]

答案 1 :(得分:2)

您可以使用filter仅保留大于n的元素:

>>> def all_gt(nums, n):
...     return filter(lambda x: x > n, nums)
>>> all_gt([1, 2, 3, 4], 4)
[]
>>> all_gt([2, 3, 4, 5], 3)
[4, 5]

答案 2 :(得分:0)

只使用if条件应用列表理解就可以了解

nums = [ 1, 2, 3, 4, 5]
constraint = 3

filtered_result = [ x for x in nums if x > constraint]

将导致[4,5]