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} #過濾