*args返回一个列表,其中只包含偶数参数。

5
我正在学习Python,练习中需要编写一个函数,该函数接受任意数量的参数,并返回一个仅包含偶数参数的列表。
我的代码是错误的,我知道:(但这段代码有什么问题?)
def myfunc(*args):
    for n in args:
        if n%2 == 0:
            return list(args)
myfunc(1,2,3,4,5,6,7,8,9,10)

创建一个列表,如 output = [],然后如果 n 是偶数,则将其附加到列表中:output.append(n)。最后在 myfunc 的末尾返回 output - Loocid
1
你所做的只是在任何一个参数为偶数时返回所有参数。 - chepner
9个回答

8

做一个列表推导式,从args中选择符合我们选择条件的元素:

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

print(myfunc(1,2,3,4,5,6,7,8,9,10))
# [2, 4, 6, 8, 10]

2
这也可能有帮助,不过前面的评论看起来更高级:

最初的回答

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

0
你需要创建一个空列表来存储偶数。同时将你的参数转换为列表。然后将偶数添加到新创建的列表中。
def myfunc(*args):
new_list = []
for num in list(args):
    if num % 2 == 0:
        new_list.append(num)
else:
    pass
return new_list 

0
def myfunc(*args):
    return [x for x in args if not x&1]

嗨Pham,感谢您的贡献。但是请在您的答案中包含解释。这是一个供人们学习的社区,仅仅回答一个没有解释其工作原理的代码片段对于学习没有帮助。 - Chad Lamb

0
def myfunc(*args):
    mylist = []
    for x in list(args):
        if x % 2 == 0:
            mylist.remove(x)
    return mylist

5
你好Nahean!欢迎来到SE!为了更好地帮助提问者和未来的读者,除了提供可运行的代码外,请说明问题所在以及如何修复它。此外,请阅读格式指南,了解如何正确格式化代码。 - puchal

0

选择偶数

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

这段代码与Mahyar Khatiri在一月份的回答几乎完全相同。如果你真的认为你所做的少量更改很重要,请在代码中使用注释或额外文本来解释它们。 - Blckknght

0
def myfunc(*args):
    #solution 1
    # Create an empty list
    mylist = []
    for number in args:
        if number %2 == 0:
            mylist.append(number)
        else:
            pass
    # return the list
    return mylist
    
    #solution 2
    # Uses a list comprehension that includes the logic to find all evens and the list comprehension returns a list of those values
    # return [n for n in args if n%2 == 0]

0
def myfunc(*args):
    even=[]
    for n in args:
        if n %2==0:
            even.append(n)
        else:
            pass
        
    return even
myfunc(1,2,3,4,8,9)

7
虽然这段代码可能解决了问题,但是提供一个解释说明如何和为什么解决了这个问题将有助于提高你的帖子质量,并可能导致更多的赞。请记住,你正在回答未来读者的问题,而不仅仅是现在提问的人。请编辑你的答案以添加解释,并指出应用的局限性和假设条件。 - Adrian Mole

-1
def myfunc(*args):
    x=[]
    for i in list(args):
        if i%2==0:
            x.append(i)
    return x

嗨naruto,欢迎来到SE!为了更好地帮助提问者和未来的读者,除了工作代码外,请包括问题是什么以及您如何解决它。此外,请阅读格式指南,以了解如何正确格式化代码。 - yummypasta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接