filter和map是python中常常被使用的两个方法。这两个方法的使用方法很相似:
相同点:
第一个参数都是一个函数
第二个参数是一个可迭代序列
返回可迭代对象
不同点:
filter的第一个参数是函数,这个函数是用来判断条件的
map的第一个函数也是函数,但这个函数是用来做映射的。
map
a = [3,4,1,2,54,6]
b = list(map(lambda x: x**2,a))
print(b)
# [9, 16, 1, 4, 2916, 36]
在map中,第一个参数是一个lambda函数,作用是把输入元素乘方,结果作为输出。第二个参数就是可迭代序列a,a的每一个元素都会经过lambda函数变成另一个数字。所有经过lambda函数的数字的输出都作为map函数的输出,形成一个可迭代序列。然后用list函数把可迭代序列变成list形式。
filter
a = [3,4,1,2,54,6]
b = list(filter(lambda x:x>2,a))
print(b)
# [3, 4, 54, 6]
filter的第一个参数是lambda函数,该函数代表了一个条件,只要a中的元素满足了这个条件,才能作为filter的输出中的一个元素。