我在尝试将列表分为均匀的数字奇数和 em>偶数。
教授指出这条代码:
odd, even = foo([1,2,3,4,5,6], lambda x : x % 2 == 0)
应该将数字分为奇数甚至奇数。我该怎么做?我知道如何在奇数和偶数数字之间过滤,但是我不确定如何将两个变量设置为一行等于它们的部分。
在您的示例中, foo
是一个函数,并返回一对变量。例如:
def foo():
a = 1
b = 2
return (a, b)
x, y = foo() # x is now '1', and y is now '2'
因此,您需要创建一个在输入列表上迭代的函数,并将元素分配给odd
列表或even
列表。然后返回这两个列表,如上面的示例。
返回包含奇数和偶数值的元组。您最近的功能可能是:
>>> def foo(l,f):
... even = filter(f,l)
... odd = [i for i in l if i not in even]
... return odd,even
...
>>> odd, even = foo([1,2,3,4,5,6], lambda x : x % 2 == 0)
>>> odd
[1, 3, 5]
>>> even
[2, 4, 6]
此任务称为元组解开包装。这样,当您返回逗号分隔变量和左侧的变量相同数量时,左侧侧的每个变量将分别分别分配给右侧的范围。