带有if条件的lambda()

时间:2017-04-09 02:52:54

标签: python lambda

我有一些练习代码:

even = []
odd = []

for x in range(1000):
    if x % 2 != 0:
        odd.append(x)
    else:
        even.append(x)

print map(lambda x: x if str(x)[-1] == '2' else pass, even)

print even
print odd

在我看来,我应该得到0到999范围内的奇数的完整列表以及来自相同范围的偶数的列表,这些数字不以" 2"结尾。然而,在实践中,我继续得到指向"传递"的语法错误。在lambda表达。

我在这里做错了什么?

干杯, Greem

3 个答案:

答案 0 :(得分:1)

pass是一个语句,但作为运算符的内联if需要将其操作数作为表达式。 map实际上无法从序列中删除元素,但filter(返回一个只包含函数返回True的值的新列表)可以:

print filter(lambda x: str(x)[-1] == '2', even)

答案 1 :(得分:0)

如果您喜欢我并且不喜欢过滤器和lambda,那么您可以使用Python list comprehension完成此任务:

print [x for x in even if str(x)[-1] == '2']

答案 2 :(得分:0)

even = []
odd = []

for x in range(1000):
    if x % 2 != 0:
        odd.append(x)
    else:
        even.append(x)

print (filter(lambda x: str(x)[-1] == '2', even))

print (even)
print (odd)

也可以在python 3上工作..