Mar*_*Zhu 1 python python-3.x map-function
我map用来处理Python3.6中的列表:
def calc(num):
if num > 5:
return None
return num * 2
r = map(lambda num: clac(num), range(1, 10))
print(list(r))
# => [2, 4, 6, 8, 10, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
我期望的结果是:[2, 4, 6, 8, 10]。
当然,我可以使用它filter来处理map结果。但是有没有办法map直接返回我想要的结果?
map无法直接过滤掉项目。每输入一项输出一项。您可以使用列表理解来None从结果中过滤掉。
r = [x for x in map(calc, range(1,10)) if x is not None]
Run Code Online (Sandbox Code Playgroud)
(这只会calc在范围内的每个号码上调用一次。)
撇开:没有必要写lambda num: calc(num)。如果您想要一个返回结果的函数,请calc使用calc它本身。
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |