msww.net
当前位置:首页 >> 关于Python中FiltEr 和mAp这两个方法有区别吗?用法... >>

关于Python中FiltEr 和mAp这两个方法有区别吗?用法...

filter 是过滤器,你提供一个方法判断,它就把符合这个方法的数据过滤出来;map 是映射,你提供一种转换方式,它将遍历列表或者元祖或者别的什么数据按照这种转换方式全部转换.

3.x 返回的是一个iter obj,如果想返还【】,要加上list() >>> list(filter(bigger_than_five,[1,10])) [6, 7, 8, 9, 10] 其实3.x里面,达到你的这个目的的最简单的方法就直接: >>> [x for x in range(11) if x > 5] [6, 7, 8, 9, 10]

filter(function, iterable)map(function, iterable)filter将 function依次作用于iterable的每个元素,如果返回值为true, 保留元素,否则从iterable里面删除例如:def test(x): return (x > 3)filter(test, [1, 2, 3, 4, 5]) =====> [4, 5]map将function作用于iterable,每个元素,将对应输出结果保存为一个list例如def add(x): return (1 + x)map(test, [1, 2, 3, 4, 5]) =====> [2, 3, 4, 5, 6]

map是把函数调用的结果放在列表里面返回,它也可以接受多个 iterable,在第n次调用function时,将使用iterable1[n], iterable2[n], 作为参数.filter(function, iterable) 这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.def f_large_than_5(x): return x > 5filter(f_large_than_5, range(10))>>[6,7,8,9]

python3里面map函数返回的是一个iterator 可以省点内存而列表解析不行 不过如果不是list太大的话列表解析比较方便 顺便 python3里面已经没有reduce了大概是因为Python的那几个lambda functions先作为built-in function出现(map、reduce、filter等),然后才有的list comprehension和set comprehension.

Map接口:Map没有继承Collection接口,Map提供key到value的映射.一个Map中不能包含相同的key,每个key只能映射一个 value.Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射.

# b = filter(lambda x:x>5,[1,2,3,4,5,6,7])# print(list(b))def filters(x): if x > 5: return xb = filter(filters,[1,2,3,4,5,6,7])print(list(b))#[6, 7]def maps(x): if x > 5: return xb = map(maps,[1,2,3,4,5,6,7])print(list(b))#[None, None, None, None, None, 6, 7]

我感觉这个场景不应该用 filter 来实现因为 filter 做过滤的依据是序列中的元素内容而这个场景的过滤依据的是元素出现的次序如果一定要用 filter 也不是不可以,只是非常的别扭……def func(lst): while len(lst) > 1: lst = zip(*filter((lambda i:i[0]%2),enumerate(lst)))[1] return lst[0] if lst else Noneprint func([0,1,2,3,4,5,6,7,8,9])# >> 7

#!/usr/bin/env python# coding=utf-8"""map, filter, reduce in python3"""from functools import reducedef test_main(): assert list(range(10)) == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] assert list(map(lambda x: x + 1, range(10))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

先写个函数判断是不是素数,再用filter求出列表里的素数def isprime(n): re = true if n 评论0 0 0

网站首页 | 网站地图
All rights reserved Powered by www.msww.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com