十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹“Python列表內(nèi)涵實際中的使用”,在日常操作中,相信很多人在Python列表內(nèi)涵實際中的使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python列表內(nèi)涵實際中的使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
成都創(chuàng)新互聯(lián)公司,為您提供成都網(wǎng)站建設(shè)、重慶網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務汽車玻璃修復等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進步,是我們永遠的責任!
Python列表內(nèi)涵(List Comprehensions,也譯作“列表推導式”)是Python***有力的語法之一,常用于從集合對象中有選擇地獲取并計算元素,雖然多數(shù)情況下可以使用for、if等語句組合完成同樣的任務,但列表內(nèi)涵書寫的代碼更簡潔(當然有時可能會不易讀)。
列表內(nèi)涵的一般形式如下,我們可以把[]內(nèi)的列表內(nèi)涵寫為一行,也可以寫為多行(一般來說多行更易讀)。
[表達式 for item1 in 序列1 ... for itemN in 序列N if 條件表達式]
上面的表達式分為三部分,最左邊是生成每個元素的表達式,然后是for 迭代過程,最右邊可以設(shè)定一個if 判斷作為過濾條件。
列表內(nèi)涵的一個著名例子是生成九九乘法表:
s = [(x, y, x*y) for x in range(1, 10) for y in range(1,10) if x>=y]
列表內(nèi)涵可能放在函數(shù)編程一章更合適,因為它可以統(tǒng)一實現(xiàn)map和filter等高階函數(shù)(下一章介紹)。不過我還是傾向于將它看為一種組合的流程控制語句,而且我個人感覺它與C#中的LINQ有點神似(當然LINQ更強大,可以處理數(shù)據(jù)庫和XML)。下面是兩個例子,一個用LINQ實現(xiàn),一個用Python的列表內(nèi)涵實現(xiàn)。
C#中用LINQ找出10以內(nèi)的偶數(shù) var s = from x in Enumerable.Range(0, 10) where x % 2 == 0 select x;
#Python中用列表內(nèi)涵模擬以上LINQ語句 s = [x for x in range(0, 10) if x % 2 == 0]
當然上邊的例子很簡單,實際上我們可以用列表內(nèi)涵完成更復雜的程序設(shè)計任務,而且效率一般會比使用for、if等的組合語句高(因為中間省略了一些列表的生成和賦值過程)。Python 2.5 之后,列表內(nèi)涵進行了進一步的擴展,如果一個函數(shù)接受一個可迭代對象作為參數(shù),那么可以給它傳遞一個不帶中括號的列表內(nèi)涵,這樣就不需要一次生成整個列表,只要將可迭代對象傳遞給函數(shù)。
動態(tài)表達式
先布置一個思考題:在C#語言中,如果需要在文本框中輸入1+2(或更復雜的數(shù)學表達式)后計算它的值,你會怎么做呢?
不怕大家笑,我在用C#解決這個問題的時候,是自己做了一個表達式解析器…………,雖然只能計算加減乘除的簡單組合,但也著實費了我好大力氣。后來才開始使用各種各樣的第三方Parse組件,msscript等?,F(xiàn)在我們有了Python,要完成這個任務可以說是非常簡單,簡單到你不敢相信:只要用內(nèi)置的eval()函數(shù),就可以計算并返回任意有效表達式的值。例如:
str = '1+2'2 print eval(str)
你還可以試驗更復雜的表達式,是不是很Powerful的一項功能?
除了eval函數(shù)之外,Python還提供了exec語句將字符串str當成有效Python代碼來執(zhí)行,看下面的例子:
#exec.py exec 'a=100'3 print a
另外還有execfile函數(shù),它用來執(zhí)行一個外部的py文件。上一個例子存為exec.py后,運行下邊的代碼就知道是怎么回事了:
execfile(r'c:\exec.py')
***提醒,默認的eval(),exec,execfile()所運行的代碼都位于當前的名字空間中,eval(), exec,和execfile()函數(shù)也可以接受一個或兩個可選字典參數(shù)作為代碼執(zhí)行的全局名字空間和局部名字空間,具體可以參考Python的手冊,我就不啰嗦了。
到此,關(guān)于“Python列表內(nèi)涵實際中的使用”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享題目:Python列表內(nèi)涵實際中的使用
當前路徑:http://m.jiaotiyi.com/article/pggheo.html