【问题标题】:Function Definition: Returning a list of even numbers from list of integers函数定义:从整数列表中返回偶数列表
【发布时间】:2016-01-07 21:33:45
【问题描述】:

将函数 print_even_values 与整数列表的输入一起使用,并打印列表中的每个偶数。调用 print_even_values([2, 8, 1, 9, 0, 19, 24]) 将在 shell 窗口中产生以下输出:

2 8 0 24

我的做法是:

def print_even_numbers(n:list) -> list:

'''Return a list of even numbers given a list of integers'''
for x in list:
    if x % 2 == 0:
        return(x)
 assert print_even_numbers([2, 4, 2, 4, 5, 6]) == [2, 4, 2, 4, 6]

 assert print_even_numbers([4, 1, 3, 2, 5, 9]) == [4, 2]

,但有一个错误。另外,如何使我的输出类似于问题? (即

 [2, 4, 2, 4, 6]

vs.(分隔线)

2
4
2
4
6 

【问题讨论】:

    标签: python list function variable-assignment definition


    【解决方案1】:

    我认为问题在于您返回的是偶数,而不是返回偶数列表。你应该在它是偶数时存储一个数字,然后返回列表:

    def print_even_numbers(number_list):
        even_numbers = [] # define the empty list of even numbers
        for number in number_list:
            if number % 2 == 0: # check if number is even
                even_numbers.append(number) # if it is, store it
        return even_numbers # Last step returns the list of even numbers
    

    【讨论】:

    • 你的return语句是不是缩进太远了?它不应该与for语句处于同一级别吗?否则,您将始终在循环的第一次迭代时返回,并且始终返回一个零或一个数字的列表。
    • 你是对的,它没有正确缩进。我已接受您的编辑,谢谢。
    【解决方案2】:

    您也可以使用如下所示的更长版本:

    def generate_evens():
        result = []
        for x in range(1, 50):
            if x % 2 == 0:
                result.append(x)
        return result
    
    
    print(generate_evens())
    

    你有一个短的使用这个:

    def generate_evens1():
        return [x for x in range(1, 50) if x % 2 == 0]
    
    
    print(generate_evens1())
    

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多