Python實戰171201篩選數據


Python應用:網絡編程,系統網絡運維,3D游戲開發,圖形界面開發,科學與數字計算,web后端。

 對着慕課的練習,果然慕課的實戰也是差距很大-------centos7 -Python3.6.3

 

篩選數據:

    通常做法就是迭代if。

--------去除負數------------

      data = [1,2,3,4,5,6,7,-2,-3,-7]

      res = [ ]

      for x in data:

        if x>=0:

          res.append(x)

      print res

-------------------------------

 

列表

>>>import random

  #載入模塊,當然這個模塊也是需要熟悉的

>>>data=[random.randint(-10,20) for _ in range(10)]

  #Python3中沒有xrange,range替換xrange了,當然第一學就記住range變成一個生成器了。性能優化結果

>>>print (date)  >>>date

  #Python3print都是帶括號的,感覺像是回歸c呢?

>>>list(filter(lambda x :x>=0,data))  #函數式編程

  #python3中貌似都需要加個list這種殼么?為了優化性能  filter函數:filter()為已知的序列的每個元素調用給定的布爾函數,調用中,返回值為非零的元素將被添加至一個列表中

>>>[x for x in data if x>=0]  #列表解析

>>>timeit('[x for x in data if x>=0]','data=[1,2,3,4,5,6,7,-2,-3,-7],number=1000000')

  # timeit(函數名_字符串,運行環境_字符串,number=運行次數)默認就是一百萬

>>>timeit('filter(lambda x:x>=0,data)','data=[1,2,3,-1,-2,4]')

  #timeit只接受有且唯一 一個環境。。。。。。哇,這句話因為少個逗號讓我好一陣郁悶

  #然后就是比對時間咯,發現列表解析速度不是最快!!!,嗨呀真是信了你去年的結論

當然老師說的是對的,前提是顯示數據,而不是處理數據!

 

 

 字典

 >>>d={x:random.ranint(60.100) for x in ranger(1,21)}  #創立字典

>>>d  >>>print (d)  #顯示集合

>>>{k:v for k,v in d.items() if v > 80}  >>>{k:v for k,v in _.items() if v > 80}  #過濾

 

 集合

>>>s=set(data)  #創立集合

>>>s  >>>print(s)  #顯示集合

>>>{x for x in s if x%3==0}  #過濾

 


免責聲明!

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



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