Python3 filter()函数和map()函数

filter(function or None,iterable) 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中;当当一个参数为None时,将第二个参数序列中的True值筛选出来。。

print(list(filter(None,[1,0,False,True])))
print(list(filter(lambda x:x%2,range(10))))

输出为:
[1, True]
[1, 3, 5, 7, 9]
上述第二个:
print(list(filter(lambda x:x%2,range(10))))
等价于:
def odd(x):
    return x%2
temp=range(10)
print(list(filter(odd,temp)))  

用filter()和lambda()表达式快速求出100以内的所有3的倍数。

print(list(filter(lambda x:x%3==0,range(101))))
print(list(filter(lambda x:not(x%3),range(101))))
#以下为列表推导式
print([i for i in range(0,101) if not(i%3)])
print([i for i in range(0,101) if i%3==0])
print(list(range(10)))
输出为: 
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

 

map() 函数

map(function, iterable, ...)或 map(function,*iterables)

会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,直到可迭代序列的每个元素都处理完,返回包含每次 function 函数返回值的新列表。返回所有处理后元素构成的新序列。

 

 

截图部分参考: https://www.runoob.com/python/python-func-map.html

 

print(list(map(lambda x:x*2,range(10))))

输出: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

posted on 2021-07-26 14:07  lmqljt  阅读(99)  评论(0编辑  收藏  举报

导航