Python 函数定义:从整数列表返回偶数列表
使用“打印偶数值”功能,输入整数列表,并打印列表中的每个偶数。调用打印偶数值([2,8,1,9,0,19,24])将在shell窗口中生成以下输出: 二, 8. 0 二十四 我的做法是:Python 函数定义:从整数列表返回偶数列表,python,list,function,variable-assignment,definition,Python,List,Function,Variable Assignment,Definition,使用“打印偶数值”功能,输入整数列表,并打印列表中的每个偶数。调用打印偶数值([2,8,1,9,0,19,24])将在shell窗口中生成以下输出: 二, 8. 0 二十四 我的做法是: 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)
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]
,但有一个错误。另外,如何使我的输出类似于问题?(即
vs(单独行)
我认为问题在于您返回的是偶数,而不是偶数列表。您应该在偶数时存储一个数字,然后返回列表:
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
我认为问题在于您返回的是偶数,而不是偶数列表。您应该在偶数时存储一个数字,然后返回列表:
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
您也可以使用更长的版本,如下所示:
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())
您也可以使用更长的版本,如下所示:
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())
您的return语句缩进是否太远了?它是否应该与for语句处于同一级别?否则,您将始终在循环的第一次迭代中返回,并且始终包含一个由零或一个数字组成的列表。您是对的,它没有正确缩进。我已接受您的编辑,谢谢。您的return语句缩进是否太远了它不应该与for语句处于同一级别吗?否则,在循环的第一次迭代中,您总是返回一个包含零或一个数字的列表。您是对的,它没有正确缩进。我接受您的编辑,谢谢。