python3 番外篇map()和filter()的区别

发布时间 2023-07-21 16:11:53作者: 潇湘神剑

map(function, iterable)和filter(function, iterable)
共同点
  都接受2个参数,函数和可迭代对象。对可迭代对象中的每个元素都应用一个函数。
不同点:
  map()函数返回一个新的列表,返回对可迭代对象所有元素操作后的新值。
  filter()函数也返回一个新的列表,但是只返回函数返回值为True的元素。
举例

map()

import random
usd = [random.randint(1,10) for _ in range(10)]
print(usd)
cny = list(map(lambda x:x*2, usd))
print(cny)

"""
返回值:
usd  [3, 6, 6, 4, 4, 8, 5, 5, 10, 2]
cny  [6, 12, 12, 8, 8, 16, 10, 10, 20, 4]
"""
import random
usd = [random.randint(1,10) for _ in range(10)]
print(usd)
cny = list(map(lambda x:x>8, usd))
print(cny)

"""
返回值:
usd [5, 3, 3, 3, 6, 1, 10, 8, 4, 7]
cny [False, False, False, False, False, False, True, False, False, False]
"""

filter()

import random
usd = [random.randint(1,10) for _ in range(10)]
print(usd)

def change(x):
    return x * 2

cny = list(filter(change,usd))
print(cny)

"""
返回值:
usd  [2, 1, 6, 4, 10, 5, 9, 10, 10, 8]
cny  [2, 1, 6, 4, 10, 5, 9, 10, 10, 8]
"""
import numpy as np
import random
usd = [random.randint(1,10) for _ in range(10)]
print(usd)

cny = list(filter(lambda x:x>8,usd))
print(cny)

"""
返回值:
usd  [5, 10, 8, 4, 9, 7, 6, 9, 1, 4]
cny  [10, 9, 9]
"""