繁体   English   中英

如何从函数中给定的参数中创建一个列表?

[英]How can I create a list out of the arguments given in a function?

我是 Python3 的初学者,我想弄清楚如何解决这个练习:

定义一个名为myfunc的函数,它接受任意数量的参数,并返回一个仅包含偶数参数的列表。

我试过这个:

def myfunc(*args):
    a= list(args)
    for num in a:
            if num%2==0:
                return num

当试图调用myfunc(1,2,3,4,5,6)它只需要第一个偶数:2。为什么会发生这种情况?

如何创建仅返回偶数的列表?

问题是您在找到第一个值后返回,因此它只会返回第一个值。 你可以尝试这样的事情:

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


print(myfunc(1, 2, 3, 4, 5, 6))

输出

[2, 4, 6]

上述方法使用列表理解 一个等效的解决方案,虽然不那么 pythonic,如下:

def myfunc(*args):
    result = []
    for num in args:
        if num % 2 == 0:
            result.append(num)
    return result

args只是一个常规的可迭代对象。 所以

return [value for value in args if value%2==0]

在您当前的代码中,您无法获得整个列表,因为您在找到第一个值时调用了return

问题是一旦你的函数执行return就是它,所以你想要做的是将所有这些值附加到一个列表中并返回整个列表

def myfunc(*args):
    a= list(args)
    b = []
    for num in a:
        if num%2==0:
            b.append(num)
    return b    

b = myfunc(1, 2, 3, 4, 5, 6)
print(b)
 (xenial)vash@localhost:~/python/stack_overflow$ python3.7 helping.py [2, 4, 6]

展望未来,只是为了向您展示您可以从这里减少一些量,请注意2 % 2 = 0正确的,因此我们可以说if not 2%因为not 0将评估为True并以这种方式满足我们的条件

def myfunc(*args):
    lista = []
    for i in list(args):
        if not i % 2:
            lista.append(i)
    return lista

lista = myfunc(1, 2, 3, 4, 5, 6)
print(lista)

一旦你真的坠入爱河 <3

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM