成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python列表內(nèi)涵實(shí)際中的使用介紹

開(kāi)發(fā) 后端
Python列表內(nèi)涵是應(yīng)用相當(dāng)廣泛的一個(gè)Python語(yǔ)句。下面我們來(lái)詳細(xì)的看看最簡(jiǎn)單的Python列表內(nèi)涵的具體編寫方法。

Python列表內(nèi)涵如何進(jìn)行相關(guān)的編寫。其實(shí)在使用的時(shí)候有不少的問(wèn)題需要存在,下面我們就來(lái)看看相關(guān)的使用情況。具體就用如何編寫列表內(nèi)涵的一個(gè)著名例子是生成九九乘法表來(lái)向大家介紹。#t#

Python列表內(nèi)涵(List Comprehensions,也譯作“列表推導(dǎo)式”)是Python***有力的語(yǔ)法之一,常用于從集合對(duì)象中有選擇地獲取并計(jì)算元素,雖然多數(shù)情況下可以使用for、if等語(yǔ)句組合完成同樣的任務(wù),但列表內(nèi)涵書寫的代碼更簡(jiǎn)潔(當(dāng)然有時(shí)可能會(huì)不易讀)。

列表內(nèi)涵的一般形式如下,我們可以把[]內(nèi)的列表內(nèi)涵寫為一行,也可以寫為多行(一般來(lái)說(shuō)多行更易讀)。

[表達(dá)式 for item1 in 序列1 ... for itemN in 序列N if 條件表達(dá)式]

上面的表達(dá)式分為三部分,最左邊是生成每個(gè)元素的表達(dá)式,然后是for 迭代過(guò)程,最右邊可以設(shè)定一個(gè)if 判斷作為過(guò)濾條件。

列表內(nèi)涵的一個(gè)著名例子是生成九九乘法表:

  1. s = [(x, y, x*y) for x in range(1, 10) for y in range(1,10) if x>=y] 

列表內(nèi)涵可能放在函數(shù)編程一章更合適,因?yàn)樗梢越y(tǒng)一實(shí)現(xiàn)map和filter等高階函數(shù)(下一章介紹)。不過(guò)我還是傾向于將它看為一種組合的流程控制語(yǔ)句,而且我個(gè)人感覺(jué)它與C#中的LINQ有點(diǎn)神似(當(dāng)然LINQ更強(qiáng)大,可以處理數(shù)據(jù)庫(kù)和XML)。下面是兩個(gè)例子,一個(gè)用LINQ實(shí)現(xiàn),一個(gè)用Python的列表內(nèi)涵實(shí)現(xiàn)。

 

  1. C#中用LINQ找出10以內(nèi)的偶數(shù)  
  2. var s = from x in Enumerable.Range(0, 10) where x % 2 == 0 select x;  
  1. #Python中用列表內(nèi)涵模擬以上LINQ語(yǔ)句  
  2. s = [x for x in range(0, 10) if x % 2 == 0] 

當(dāng)然上邊的例子很簡(jiǎn)單,實(shí)際上我們可以用列表內(nèi)涵完成更復(fù)雜的程序設(shè)計(jì)任務(wù),而且效率一般會(huì)比使用for、if等的組合語(yǔ)句高(因?yàn)橹虚g省略了一些列表的生成和賦值過(guò)程)。Python 2.5 之后,列表內(nèi)涵進(jìn)行了進(jìn)一步的擴(kuò)展,如果一個(gè)函數(shù)接受一個(gè)可迭代對(duì)象作為參數(shù),那么可以給它傳遞一個(gè)不帶中括號(hào)的列表內(nèi)涵,這樣就不需要一次生成整個(gè)列表,只要將可迭代對(duì)象傳遞給函數(shù)。

動(dòng)態(tài)表達(dá)式

先布置一個(gè)思考題:在C#語(yǔ)言中,如果需要在文本框中輸入1+2(或更復(fù)雜的數(shù)學(xué)表達(dá)式)后計(jì)算它的值,你會(huì)怎么做呢?

不怕大家笑,我在用C#解決這個(gè)問(wèn)題的時(shí)候,是自己做了一個(gè)表達(dá)式解析器…………,雖然只能計(jì)算加減乘除的簡(jiǎn)單組合,但也著實(shí)費(fèi)了我好大力氣。后來(lái)才開(kāi)始使用各種各樣的第三方Parse組件,msscript等。現(xiàn)在我們有了Python,要完成這個(gè)任務(wù)可以說(shuō)是非常簡(jiǎn)單,簡(jiǎn)單到你不敢相信:只要用內(nèi)置的eval()函數(shù),就可以計(jì)算并返回任意有效表達(dá)式的值。例如:

  1. str = '1+2'2 print eval(str) 

你還可以試驗(yàn)更復(fù)雜的表達(dá)式,是不是很Powerful的一項(xiàng)功能?

除了eval函數(shù)之外,Python還提供了exec語(yǔ)句將字符串str當(dāng)成有效Python代碼來(lái)執(zhí)行,看下面的例子:

  1. #exec.py  
  2. exec 'a=100'3 print a 

另外還有execfile函數(shù),它用來(lái)執(zhí)行一個(gè)外部的py文件。上一個(gè)例子存為exec.py后,運(yùn)行下邊的代碼就知道是怎么回事了:

  1. execfile(r'c:\exec.py') 

***提醒,默認(rèn)的eval(),exec,execfile()所運(yùn)行的代碼都位于當(dāng)前的名字空間中,eval(), exec,和execfile()函數(shù)也可以接受一個(gè)或兩個(gè)可選字典參數(shù)作為代碼執(zhí)行的全局名字空間和局部名字空間,具體可以參考Python的手冊(cè),我就不啰嗦了。

 

責(zé)任編輯:張浩 來(lái)源: IT168
相關(guān)推薦

2010-03-16 20:27:52

Python模塊

2024-11-21 06:00:00

Python列表推導(dǎo)式

2010-03-22 19:11:55

Python連接

2010-03-24 09:46:16

Python 2.6

2010-03-25 09:38:03

Eclipse開(kāi)發(fā)Py

2010-03-19 12:49:20

Python編程

2010-03-22 15:58:08

Python模塊功能

2009-08-31 17:47:43

C#接口使用

2010-03-04 13:53:17

Python實(shí)現(xiàn)WEB

2010-03-19 14:59:00

python Stri

2010-03-24 18:54:53

Python語(yǔ)言

2009-12-18 16:57:02

CISCO路由器

2010-03-17 15:58:08

Python環(huán)境

2010-03-22 09:54:38

Python開(kāi)發(fā)環(huán)境

2010-03-23 18:20:26

Python os.g

2010-03-17 09:32:16

Python安裝筆記

2010-03-19 17:39:49

Python編程

2010-03-26 18:51:51

Python作用域

2010-04-09 16:26:53

Oracle join

2010-03-17 15:17:19

Python矩陣轉(zhuǎn)置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 国产精品久久久久久一区二区三区 | 999国产精品视频免费 | 精品日韩一区 | 91精品国产综合久久久久久首页 | 波多野结衣电影一区 | 久久久久国产精品一区二区 | 精品在线一区 | 久草网站 | 福利片在线观看 | 亚洲高清在线 | 久久久www成人免费无遮挡大片 | 蜜桃av一区二区三区 | 亚洲视频国产视频 | 欧美性猛交一区二区三区精品 | 免费精品久久久久久中文字幕 | 亚洲成人三区 | www.蜜桃av| 91色啪 | 日韩一区二区福利视频 | 国产成人免费视频网站视频社区 | 国产人久久人人人人爽 | 日韩在线视频观看 | 一区二区三区视频在线观看 | 国产1区| 久久蜜桃av一区二区天堂 | 日日摸夜夜添夜夜添特色大片 | 精品国产乱码久久久久久果冻传媒 | 国产一区二区精品在线 | 成人在线免费电影 | 国产超碰人人爽人人做人人爱 | 最近日韩中文字幕 | 亚洲精品2| 国产亚洲一区二区在线观看 | 午夜影院在线观看 | 中国一级特黄毛片大片 | 91精品国产综合久久久久久首页 | 激情a| 国产精品一区二区日韩 | 欧美色a v| 日韩一区二区成人 |