功能定义:打印偶数整数列表

时间:2015-10-10 16:48:47

标签: python list function definition

我试图定义一个函数,该函数从整数列表中返回偶数整数列表

def print_even_numbers(n: list):
   '''Return a list of even numbers given a list of integers'''
   for x in list:
        if x % 2 == 0:
        return(x)

当我尝试上面的代码时,错误表明该类型不可迭代

3 个答案:

答案 0 :(得分:2)

list是列表类型的名称。所以你不能迭代一个类型。你应该使用n。其次,您的return缩进错误。它应该位于顶层功能级别,因为return退出该功能。然后你需要在某个地方收集结果。

def print_even_numbers(n):
    '''Return a list of even numbers given a list of integers'''
    result = []
    for x in n:
        if x % 2 == 0:
           result.append(x)
    return result

这可以通过列表理解来简写:

def print_even_numbers(n):
    '''Return a list of even numbers given a list of integers'''
    return [x for x in n if x % 2 == 0]

答案 1 :(得分:1)

  • 错误的python语法:

    def print_even_numbers(n: list):
    
  • 您不需要括号:

    return(x)
    
  • 错误的缩进。错误的条件。 (并且不要为自己的变量使用保留的python单词list

    for x in list:
    

概述:

def print_even_numbers(n):
    '''Return a list of even numbers given a list of integers'''
    result = []
    for x in n:
        if x % 2 == 0:
            result.append(x)
    return result

print print_even_numbers(range(10))
>>> [0, 2, 4, 6, 8]

最后更多的pythonic方法是使用yield来实现所需的行为:

def gen_even_numbers(n):
    for x in n:
        if x % 2 == 0:
            yield x

print list(gen_even_numbers(range(10)))
>>> [0, 2, 4, 6, 8]

答案 2 :(得分:0)

您可以使用filter内置

def print_even_numbers(lst):
    return list(filter(lambda x: not x%2, lst))

注意:在python 2上filter已经返回一个列表,所以不需要转换它

def print_even_numbers(lst):
    return filter(lambda x: not x%2, lst)

顺便说一下,该函数名为print_even_numbers,但它不会打印任何内容;)