返回列表的Python函数

返回列表的Python函数,python,Python,Python新手。我写这个函数只是为了以列表的形式返回偶数,但我做不到这一点。你能帮忙吗?这是我的初始函数,工作正常,但结果不是列表: def myfunc (*args): for num in args: if num % 2 == 0: print (num) 例如,使用以下参数调用函数时: myfunc(1,2,3,4,5,6,7,8,9,10) 我得到: 2 4 6 8 10 但我需要把它们列在一个列表中,我遗漏了什么?这也不起作用

Python新手。我写这个函数只是为了以列表的形式返回偶数,但我做不到这一点。你能帮忙吗?这是我的初始函数,工作正常,但结果不是列表:

def myfunc (*args):
    for num in args:
        if num % 2 == 0:
            print (num)
例如,使用以下参数调用函数时:

myfunc(1,2,3,4,5,6,7,8,9,10)
我得到:

2
4
6
8
10
但我需要把它们列在一个列表中,我遗漏了什么?这也不起作用:

list = []
def myfunc (*args):
    for num in args:
        if num % 2 == 0:
            print (list[num])

非常感谢

函数没有返回任何内容。您可能希望通过以下方式获取元素:

def myfunc (*args):
    mylist = []
    for num in args:
        if num % 2 == 0:
            mylist.append(num)
    return mylist
def myfunc (*args):
    for num in args:
        if num % 2 == 0:
            yield num
或创建临时列表:

def myfunc (*args):
    lst = []
    for num in args:
        if num % 2 == 0:
            lst.append(num)
    return lst
您可以在REPL中检查返回值:

>> type(print(num)) # print() returns None
NoneType

说明:简而言之,
yield
每次迭代函数时都返回一个元素,并且只返回一次元素。因此,该函数也称为“生成器”。有。我解释得再好不过了



更新:不要使用
list
作为变量名,
list
是一种内置方法。

您永远不会将值添加到列表中,例如
l.append(num)
。注意:不要使用
list
作为变量名,它隐藏了python的
list
类型。是的,我完全忘记了“list”是一个保留关键字,并且使用append方法添加到列表中……您可能想解释
yield num
实际上是如何工作的。记住,他/她是个新手。(抱歉打扰您:P)注意:
list
不是保留关键字,或者您无法用变量隐藏它,它是一个内置的。非常感谢!有效。快速提问,你怎么知道回报应该与for一致,而不是if一致?非常感谢。它需要与
for
对齐,因为
返回应该只在循环完成后发生。如果它与
If
对齐,它将只通过一次循环。