filter、map函數的區別


 1 def even(num):
 2     if num%2==0:
 3         return True
 4     return False
 5 lis = [1,2,3,4,5,6,7,8,9]
 6 res = filter(even,lis)
 7 print('filter..',list(res))  #filter只保留,返回為真的數據,過濾list的作用
 8 res2 = map(even,lis)
 9 print('map..',list(res2))  #map是幫你循環調用函數,這個函數返回就保存什么。
10 
11 filter.. [2, 4, 6, 8]
12 map.. [False, True, False, True, False, True, False, True, False]

map() 會根據提供的函數對指定序列做映射。

第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。

filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

該接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。

 

過濾出1~100中平方根是整數的數:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import math
def is_sqr(x):
    return math.sqrt(x) % 1 == 0
 
newlist = filter(is_sqr, range(1, 101))
print(newlist)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

參考http://www.runoob.com/python/python-func-filter.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM