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

时间:2018-09-20 17:39:11

标签: python function

我是Python3的初学者,我试图弄清楚如何解决此问题:

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

我尝试过:

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

当尝试拨出myfunc(1,2,3,4,5,6)时,它只需要第一个偶数:2。为什么会这样?

  

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

5 个答案:

答案 0 :(得分:1)

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

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


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

输出

[2, 4, 6]

上述方法使用list comprehension。一个等效的解决方案(虽然不像pythonic那样)如下:

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

答案 1 :(得分:0)

search_path只是一个常规的迭代器。所以

"$user", public, tiger, postgis

在您当前的代码中,您没有得到完整的列表,因为找到第一个值时调用args

答案 2 :(得分:0)

问题在于函数一旦执行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]

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

我一直在研究同一个问题,但是遇到了另一个问题:最大递归深度。

lst = []

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

我几乎可以通过给它分配一个变量将args变成一个列表来修复它(就像您所做的那样),但是却忘了在附加列表之后返回附加列表(我仍然很困惑为什么'return lst.append(num)无效):

lst = []

def myfunc(*args):
    e = list(args)
    for num in e:
        if num % 2 == 0:
            return lst.append(num)

最后:我的固定功能代码:

lst = []

def myfunc(*args):
    e = list(args)
    for num in e:
        if num % 2 == 0:
            lst.append(num)
return lst