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]