函数定义:从整数列表中返回偶数列表
Posted
技术标签:
【中文标题】函数定义:从整数列表中返回偶数列表【英文标题】: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
【问题讨论】:
【参考方案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())
【讨论】:
以上是关于函数定义:从整数列表中返回偶数列表的主要内容,如果未能解决你的问题,请参考以下文章
#定义一个方法get_num(num),num参数是列表类型,判断列表里面的元素为数字类型。其他类型则报错,并且返回一个偶数列表:(注:列表里面的元素为偶数)。