1. 程式人生 > 程式設計 >Python如何用filter函式篩選資料

Python如何用filter函式篩選資料

一.filter函式簡介

filter函式主要用來篩選資料,過濾掉不符合條件的元素,並返回一個迭代器物件,如果要轉換為列表list或者元祖tuple,可以使用內建函式list() 或者內建函式tuple()來轉換;

filter函式接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中,就好比是用篩子,篩選指定的元素;

語法:

filter(function,iterable)

引數:

function – 函式名;

iterable – 序列或者可迭代物件;

返回值:通過function過濾後,將返回True的元素儲存在迭代器物件中,最後返回這個迭代器物件(python2.0x版本是直接返回列表list);

二.filter函式使用

1.filter函式簡單使用

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解憂
@Blog(個人部落格地址): shuopython.com
@WeChat Official Account(微信公眾號):猿說python
@Github:www.github.com
 
@File:python_process_Pool.py
@Time:2020/1/14 21:25
 
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
def check(i):
  # 如果是偶數返回 True 否則返回False
  return True if i%2 == 0 else False
 
if __name__ == "__main__":
 
  list1 =[1,2,3,4,5,6]
  result = filter(check,list1)
  print(result)
  print(type(result))
 
  # 將返回的迭代器轉為列表list或者元組
  print(list(result))
  print(type(list(result)))

輸出結果:

<filter object at 0x0000015127BA7EB8>
<class 'filter'>
[2,6]
<class 'list'>

2.filter函式配合匿名函式Lambda使用

def check_score(score):
  if score > 60:
    return True
  else:
    return False
 
if __name__ == "__main__":
 
  # 成績列表
  student_score = {"zhangsan":98,"lisi":58,"wangwu":67,"laowang":99,"xiaoxia":57}
 
  # 篩選成績大於60的成績列表
  result = filter(lambda score:score > 60,student_score.values())
  # 與上面一行程式碼等價
  # result = filter(check_score,student_score.values())
 
  print(result)
  print(type(result))
 
  # 將返回的迭代器轉為列表list或者元組
  print(list(result))
  print(type(list(result)))

輸出結果:

<filter object at 0x000001B761F88FD0>
<class 'filter'>
[98,67,99]
<class 'list'>

注意:filter函式返回的是一個迭代器物件,往往在使用時需要先將其轉換為列表list或者元祖tuple之後再操作;

python filter函式其實和內建函式map()使用方法類似,map()函式也是將迭代器或者序列中的每一個元素對映到指定的函式中,操作完成之後再返回修改後的迭代器物件;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。