我是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。为什么会发生这种情况?
如何创建只返回偶数的列表?
发布于 2018-09-21 01:43:47
args
只是一个常规的迭代器。所以
return [value for value in args if value%2==0]
在当前代码中,您无法获得整个列表,因为您在找到第一个值时调用了return
。
发布于 2018-09-21 01:43:55
问题是您是在找到第一个值之后返回的,所以它只返回第一个值。您可以尝试如下所示:
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
发布于 2018-09-21 02:25:59
问题是,一旦您函数执行了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 3.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]
https://stackoverflow.com/questions/52430484
复制相似问题