[英]How can I use a function to create a persistant list correlated to the given arguments?
[英]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.