再說列表

1列表和列表的內(nèi)存處理

列表是python組合數(shù)據(jù)類型中使用較多的類型之一十兢,以其對(duì)批量數(shù)據(jù)提供了友好的訪問支
持而被廣大開發(fā)人員所鐘愛挫剑,在程序開發(fā)操作過程中隨處可見對(duì)于列表的操作
在程序開發(fā)過程中裸删,我們對(duì)于列表的操作有兩種不同的情況需要考慮
? 我們需要一個(gè)存放了大量的有規(guī)律的數(shù)據(jù)的列表兼呵,這個(gè)列表怎么定義
? 列表中存儲(chǔ)的數(shù)據(jù)量過大满败,會(huì)不會(huì)對(duì)內(nèi)存產(chǎn)生影響

1.1類表推導(dǎo)式

如果我們接到一個(gè)需求贴铜,需求中要用帶一個(gè)包含0~10自然數(shù)的列表粪摘,應(yīng)該怎么去做?手工定義绍坝?如下面這樣的方式
my_list = [0,1,2,3,4,5,6,7,8,9,10]
但是徘意,如果需要的是0~1000的自然整數(shù)的列表呢?
沒問題轩褐,編發(fā)實(shí)現(xiàn)
my_list = list()
for i in range(1000):
my_list.append(i)

這樣當(dāng)然沒有問題椎咧,但是針對(duì)存放有規(guī)律數(shù)據(jù)的列表來說還是稍顯復(fù)雜了,pyhton提供了對(duì)于有規(guī)律數(shù)據(jù)的快捷操作:推導(dǎo)式
通過推導(dǎo)式可以很快捷方便的生成需要的數(shù)據(jù)
? 簡(jiǎn)單推導(dǎo)式
my_list = [x for x in range(0, 1000)]
生成一個(gè)包含 0~999 自然數(shù)序列的列表
? 運(yùn)算推導(dǎo)式
my_list = [x**2 for x in range(0, 100)]
生成一個(gè)包含 0~99 平方數(shù)序列的列表
? 條件推導(dǎo)式
my_list = [x for x in range(100) if x % 2 == 0]
生成一個(gè)包含 0~100 范圍內(nèi)偶數(shù)的列表
? 組合推導(dǎo)式
my_list = [x+y for x in range(0, 5) for y in range(0, 5)]
生成一個(gè) 0~5 和 0~5 二維數(shù)據(jù)排列相加的和的列表
列表推導(dǎo)式的出現(xiàn)把介,極大程度的簡(jiǎn)化了存放有規(guī)律數(shù)據(jù)的列表的操作勤讽。
在實(shí)際開發(fā)過程中蟋座,列表推導(dǎo)式的應(yīng)用也是相當(dāng)?shù)膹V泛的,甚至可以基本替代一些簡(jiǎn)單程序
結(jié)構(gòu)實(shí)現(xiàn)一行代碼獨(dú)立功能流程了

1.2列表生成器

盡管列表簡(jiǎn)潔方便的可操作性給程序開發(fā)帶來了非常便捷的操作效率脚牍,但是不可忽視的是
列表本身存儲(chǔ)數(shù)據(jù)的機(jī)制向臀,在進(jìn)行大量數(shù)據(jù)處理時(shí),會(huì)極度的消耗系統(tǒng)內(nèi)存
所以列表的操作更多的時(shí)候體現(xiàn)在少量數(shù)據(jù)集中處理的情境下莫矗。
但是需求的變化總是不可捉摸,有可能就會(huì)遇到我們要操作一個(gè)存放上百萬數(shù)據(jù)的列表中
的數(shù)據(jù)砂缩,同時(shí)這個(gè)數(shù)據(jù)有一定的規(guī)律作谚,如我們?cè)谀硞€(gè)算法中要重復(fù)不斷地獲取斐波那契數(shù)列
的下一個(gè)數(shù)據(jù)參與運(yùn)算,就需要將斐波那契數(shù)列的數(shù)據(jù)臨時(shí)存儲(chǔ)起來方便程序讀取庵芭,但是該
數(shù)列的數(shù)據(jù)基本可以說是無限的妹懒,如果將這樣的數(shù)據(jù)通過列表的格式存儲(chǔ)在程序中
呵呵!別寫代碼了双吆,咱們?nèi)グ岽u吧眨唬!
PYTHON 針對(duì)操作如此頻繁的列表,怎么可能視而不見對(duì)于內(nèi)存的大量消耗呢
列表生成器好乐,就是針對(duì)這樣的列表使用場(chǎng)景退出的

生成器語法結(jié)構(gòu)和推導(dǎo)式語法結(jié)構(gòu)及其類似
一個(gè)基本生成器:生成0~10自然數(shù)序列的數(shù)據(jù)
my_generator = (x for x in range(0,10))
直接展示:<generator object <genexpr> at 0x103d7e4c0>這是一個(gè)生成器對(duì)象匾竿、
生成器對(duì)象必須通過系統(tǒng)內(nèi)建標(biāo)準(zhǔn)函數(shù) next()來獲取生成器下一個(gè)數(shù)據(jù)
生成器的優(yōu)異性能在于使用的時(shí)候才會(huì)運(yùn)算下一個(gè)數(shù)據(jù),而不會(huì)一次將數(shù)據(jù)全部加載

>>>my_generator = (x for x in range(0,10))
>>>next(my_generator)
0
>>>next(my_generator)
1
>>>my_generator.__Next__()
2
>>>my_generator.__next__()
3
>>>print(my_generator)
<generator object<genexpr> at  0x103d7e570>

2循環(huán)遍歷與迭代器

在程序中蔚万,我們經(jīng)常會(huì)遇到這樣一些對(duì)象岭妖,通過for循環(huán)可以直接循環(huán)迭代,那么這樣可以被循環(huán)迭代的對(duì)象都是什么類型的對(duì)象反璃,我們自定義類型創(chuàng)建的對(duì)象是否也可以通過for循環(huán)進(jìn)行迭代操作呢昵慌?

pyhton中提供了一個(gè)工具對(duì)象:迭代器對(duì)象 collections.Iterable
該對(duì)象的iter()函數(shù)可以得到一個(gè)可迭代對(duì)象:collections.Iterator
程序中通過for循環(huán)進(jìn)行循環(huán)遍歷操作的,其實(shí)就是迭代器對(duì)象Iterable 在循環(huán)遍歷過程中淮蜈,可迭代對(duì)象Iterator是用于索引記錄正在遍歷的數(shù)據(jù)

image.png

我們可以在自定義類型中斋攀,通過重寫iter()方法,讓自定義對(duì)象返回一個(gè)迭代器對(duì)象這樣也就可以讓自定義類型的對(duì)象那個(gè)來完成可迭代操作
image.png

image.png

3.再說函數(shù)

3.1函數(shù)的引用賦值和參數(shù)操作

python中的函數(shù)梧田,本身也是一個(gè)對(duì)象淳蔼,常規(guī)定義語法的函數(shù),就是將一個(gè)函數(shù)對(duì)象的引用地址賦值給函數(shù)名稱的變量裁眯,通過函數(shù)名稱的變量調(diào)用執(zhí)行函數(shù)
聲明定義一個(gè)函數(shù)對(duì)象肖方,賦值給了變量show——msg
def show_msg():
print("函數(shù)代碼執(zhí)行......")
通過變量show_msg可以直接調(diào)用執(zhí)行函數(shù)對(duì)象的代碼
show_msg()

如果函數(shù)就是對(duì)象,那么函數(shù)也是和對(duì)象一樣可以被引用賦值
聲明定義一個(gè)函數(shù)對(duì)象未状,賦值給了變量 show_msg
def show_msg():
print(“函數(shù)代碼執(zhí)行……”)
函數(shù)可以賦值給一個(gè)變量
show_info = show_msg
同樣可以通過變量 show_info 來調(diào)用執(zhí)行函數(shù) show_msg
show_info()

函數(shù)也可以被當(dāng)成參數(shù)傳遞給其他函數(shù)執(zhí)行
聲明定義一個(gè)函數(shù)對(duì)象俯画,展示第一類信息
def show_msg1():
print(“函數(shù)代碼執(zhí)行,信息 1……”)
def show_msg2():
print(“函數(shù)代碼執(zhí)行司草,信息 2……”)
定義展示處理函數(shù)
def show(message):
message()
執(zhí)行代碼:函數(shù)可以當(dāng)成參數(shù)被傳遞
show(show_msg1)# 展示信息 1
show(show_msg2)# 展示信息 2

3.2函數(shù)默認(rèn)調(diào)用:偏函數(shù)

有一種函數(shù)操作艰垂,可以讓

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泡仗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子猜憎,更是在濱河造成了極大的恐慌娩怎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胰柑,死亡現(xiàn)場(chǎng)離奇詭異截亦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柬讨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門崩瓤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人踩官,你說我怎么就攤上這事却桶。” “怎么了蔗牡?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵颖系,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我辩越,道長(zhǎng)嘁扼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任黔攒,我火速辦了婚禮偷拔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亏钩。我一直安慰自己莲绰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布姑丑。 她就那樣靜靜地躺著蛤签,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栅哀。 梳的紋絲不亂的頭發(fā)上震肮,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音留拾,去河邊找鬼戳晌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痴柔,可吹牛的內(nèi)容都是我干的沦偎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼豪嚎!你這毒婦竟也來了搔驼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤侈询,失蹤者是張志新(化名)和其女友劉穎舌涨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扔字,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡囊嘉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了革为。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扭粱。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖篷角,靈堂內(nèi)的尸體忽然破棺而出焊刹,到底是詐尸還是另有隱情系任,我是刑警寧澤恳蹲,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站俩滥,受9級(jí)特大地震影響嘉蕾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霜旧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一错忱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挂据,春花似錦以清、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至个绍,卻和暖如春勒葱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巴柿。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工凛虽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人广恢。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓凯旋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓦阐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容