我在尝试将列表分成偶数和奇数时遇到问题,变量奇数和甚至代表各自的数字。
教授注意到这行代码:
odd, even = foo([1,2,3,4,5,6], lambda x : x % 2 == 0)
应将数字拆分为奇数和偶数。我该怎么办?我知道如何在奇数和偶数之间进行过滤,但我不确定如何在一行中设置两个变量等于它们各自的部分。
答案 0 :(得分:2)
在您的示例中,foo
是一个函数,并返回一对变量。例如:
def foo():
a = 1
b = 2
return (a, b)
x, y = foo() # x is now '1', and y is now '2'
因此,您需要创建一个迭代输入列表的函数,并将元素分配给odd
列表或even
列表。然后返回这两个列表,如上例所示。
答案 1 :(得分:1)
返回包含奇数值和偶数值的元组。离函数最近的是:
>>> 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]
此分配称为 Tuple Unpacking 。这样,当您在左侧返回逗号分隔变量和相同数量的变量时,左侧的每个变量将分别分配给右侧的变量。