我有一些练习代码:
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
答案 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上工作..