A. python中的filter函數怎麼用
filter就是按條件篩選:
filter(bool,['spam','','ni'])
list(filter(bool,[''spam,'','ni']))
輸出的結果為['spam','ni']
#按照bool型篩選,因為中間的『』,為空,不是bool型所以過濾掉。
B. python中的filter()函數怎麼用特別是一個函數有多個輸入參數時。
map是把函數調用的結果放在列表裡面返回,它也可以接受多個 iterable,在第n次調用function時,將使用iterable1[n], iterable2[n], ...作為參數。
filter(function, iterable)
這個函數的功能是過濾出iterable中所有以元素自身作為參數調用function時返回True或bool(返回值)為True的元素並以列表返回.
def f_large_than_5(x):
return x > 5
filter(f_large_than_5, range(10))
>>[6,7,8,9]
C. python中的filter函數怎麼用
python filter內建函數
filter函數是python內建函數,可以操作任何可迭代類型,如list,tuple,string.
filter需要帶上一個函數function和一個可迭代序列作為參數。filter()將調用該function作用於每一個可迭代序列的元素,並返回一個由該function驗證後返回值為true的元素組成新的可迭代序列,新序列的類型保持與filter參數序列的類型一致
2.filter與數字
下面用這個例子來說明:
#建個數字列表
numbers=[1,5,9,8,4,6,3,7]
#定義一個過濾標准,取小於5的數
deflessThanFive(element):
returnelement<5
printfilter(lessThanFive,numbers)
輸出結果是列表:[1,4,3]
解說:此處的過濾函數lessThanFive必需帶入一個參數(filter()會調用lessThanFive,參數是列表nembers中的每一個元素,一次一個)。filter()返回所有值都是小於5的列表
3.filter與字元串
下面用如下例子說明:
#定義元組類型
names=('Jack','Jill,'Steve','')
#篩選出名字
new_names=filter(None,names)
printnew_names
輸出結果是元組:
('Jack','Jill,'Steve')
在元組names最後一個名字是空字元串,而filter的第一個參數是None,這說明需要使用identity函數(該函數是簡單的返回該元素的)
因為python對空字元串,0和None作為False,所以上面的filter的語句就是移除空元素。
4.filter和函數
目的:找出以J開頭的名字
defstartsWithJ(element):
ifelement:
returnelement[0]=='J'
returnFalse
j_names=filter(startsWithJ,names)
printj_names
輸出結果是元組:('Jack','Jill')
注意到了嗎,上面的2個結果都是tuple而不是list,再一次說明fliter的返回值類型與參數序列的類型保持一致
D. python中filter和map的區別
li = [11,22,33,44,55,66]
ret = filter(lambda a:a>33,li)
print(list(ret))
ret1 = filter(lambda a:a+100,li)
print(ret1)
ret2 = map(lambda a:a>33,li)
print(list(ret2))
ret3 = map(lambda a:a+100,li)
print(list(ret3))
輸出:
[44, 55, 66]
[11, 22, 33, 44, 55, 66]
[False, False, False, True, True, True]
[111, 122, 133, 144, 155, 166]
通過結果可以看出:filter通過lambda表達式的判斷表達式(如a>33)作為刪選條件,內當為true時才保容留a;而map中的lambda表達式中的(如a+100)是個賦值操作,通過對列表li的每個項做該操作後得到新的列表
個人理解,歡迎指正