本文實例講述了Python同時對數據做轉換和換算處理操作。分享給大家供大家參考,具體如下:
問題:我們需要調用一個換算函數(例如sum()、min()、max()),但是首先需對數據做轉換或者篩選處理
解決方案:非常優雅的方法---在函數參數中使用生成器表達式
例如:
# 計算平方和nums=[1,2,3,4,5]s1=sum((x*x for x in nums))s2=sum(x*x for x in nums) #更優雅的用法s3=sum([x*x for x in nums]) #不使用生成器表達式print(s1)print(s2)print(s3)# 判斷一個目錄下是否存在.py文件import osfiles = os.listdir(os.path.expanduser('~'))print (files)if any(name.endswith('.py') for name in files): print('There be python!')else: print('Sorry, no python.')# Output a tuple as CSVs = ('ACME', 50, 123.45)print(','.join(str(x) for x in s))# Data reduction across fields of a data structureportfolio = [ {'name':'GOOG', 'shares': 50}, {'name':'YHOO', 'shares': 75}, {'name':'AOL', 'shares': 20}, {'name':'SCOX', 'shares': 65}]min_shares = min(s['shares'] for s in portfolio)print(min_shares)min_shares2 = min(portfolio,key=lambda s:s['shares']) #使用生成器表達式print(min_shares2)運行結果:
55
55
55
['.idlerc', '.oracle_jre_usage', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'HelloWorld', 'HelloWorld.zip', 'Links', 'Local Settings', 'log.html', 'Music', 'My Documents', 'mysite', 'mysite.zip', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'output.xml', 'Pictures', 'pip', 'PrintHood', 'Recent', 'report.html', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'Videos', '「開始」菜單']
Sorry, no python.
ACME,50,123.45
20
{'shares': 20, 'name': 'AOL'}
總結:
該方案展示了當把生成器表達式作為函數的參數時在語法上的一些微妙之處(即,不必重復使用圓括號),比如,如下的兩行代碼表示的是同一個意思:
s=sum((x*x for x in nums))s=sum(x*x for x in nums) #更優雅的用法s3=sum([x*x for x in nums]) #不使用生成器表達式
比起首先創建一個臨時列表,使用生成器做參數更為高效和優雅。
(代碼摘自《Python Cookbook》)
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答