首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用函数中给定的参数创建列表?

如何使用函数中给定的参数创建列表?
EN

Stack Overflow用户
提问于 2018-09-21 01:39:11
回答 4查看 5.5K关注 0票数 -1

我是Python3的初学者,我正在尝试如何解决这个练习:

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

我试过这个:

代码语言:javascript
复制
def myfunc(*args):
    a= list(args)
    for num in a:
            if num%2==0:
                return num

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-21 01:43:47

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

代码语言:javascript
复制
return [value for value in args if value%2==0]

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

票数 0
EN

Stack Overflow用户

发布于 2018-09-21 01:43:55

问题是您是在找到第一个值之后返回的,所以它只返回第一个值。您可以尝试如下所示:

代码语言:javascript
复制
def myfunc(*args):
    return [num for num in args if num % 2 == 0]


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

输出

代码语言:javascript
复制
[2, 4, 6]

上面的方法使用list comprehension。一种等效的解决方案,尽管没有pythonic那么严格,但如下所示:

代码语言:javascript
复制
def myfunc(*args):
    result = []
    for num in args:
        if num % 2 == 0:
            result.append(num)
    return result
票数 1
EN

Stack Overflow用户

发布于 2018-09-21 02:25:59

问题是,一旦您函数执行了return,那么您要做的就是将所有这些值追加到一个列表中,并返回整个列表

代码语言:javascript
复制
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 3.7 helping.py 2、4、6

展望未来,只是为了向您展示您可以从这里删除一些内容,请注意2 % 2 = 0是正确的,所以我们可以说if not 2%,因为not 0将计算为True,并以这种方式满足我们的条件

代码语言:javascript
复制
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

代码语言:javascript
复制
def myfunc(*args):
    return [i for i in list(args) if not i % 2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52430484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档