我是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。为什么会这样?
如何创建仅返回偶数的列表?
答案 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