python學(xué)習(xí)一

1 python 如何管理內(nèi)存

對(duì)象引用計(jì)數(shù)機(jī)制算利,垃圾回收機(jī)制,內(nèi)存池機(jī)制

一泳姐。對(duì)象引用機(jī)制

python內(nèi)部引用計(jì)數(shù)效拭,來(lái)保持追蹤內(nèi)存中的對(duì)象,所以對(duì)象都有引用計(jì)數(shù)胖秒。

引用計(jì)數(shù)增加的情況:(1缎患,一個(gè)對(duì)象分配一個(gè)新名稱。2阎肝,將其放入一個(gè)容器中<如列表挤渔,元組或字典>)

引用計(jì)數(shù)減少的情況:(1,使用del語(yǔ)句對(duì)對(duì)象別名顯示的銷毀风题。2蚂蕴,引用超出作用域或被重新賦值)

sys.getrefcount()函數(shù)可以獲得對(duì)象的當(dāng)前引用計(jì)數(shù)

多數(shù)情況下,引用計(jì)數(shù)比你猜測(cè)的要大得多俯邓。對(duì)于不可變數(shù)據(jù)(如數(shù)字和字符串)埋凯,解釋器會(huì)在程序的不同部分共享內(nèi)存斋射,以便節(jié)約內(nèi)存。

二 垃圾回收

1 當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)歸零時(shí),它將被垃圾收集機(jī)制處理掉 2 當(dāng)兩個(gè)對(duì)象a和b相互引用時(shí)欺旧,del語(yǔ)句可以減少a和b的引用計(jì)數(shù)澎嚣,并銷毀用于引用底層對(duì)象的名稱瓶摆。然而由于每個(gè)對(duì)象都包含一個(gè)對(duì)其他對(duì)象的應(yīng)用刊愚,因此引用計(jì)數(shù)不會(huì)歸零,對(duì)象不會(huì)銷毀吩抓。(從而導(dǎo)致內(nèi)存泄漏)為解決這一問題涉茧,解釋器會(huì)定期執(zhí)行一個(gè)循環(huán)檢測(cè)器,搜索不可訪問的對(duì)象的循環(huán)并刪除它們疹娶。

三 內(nèi)存機(jī)制

python伴栓、提供了對(duì)內(nèi)存的垃圾手機(jī)機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回操作系統(tǒng)

1 Pymalloc機(jī)制。為了加速python的執(zhí)行效率钳垮,python引入了一個(gè)內(nèi)存池機(jī)制惑淳,用于管理對(duì)小塊內(nèi)存的申請(qǐng)和釋放 2 python中所有小于256個(gè)字節(jié)的對(duì)象都使用pymalloc實(shí)現(xiàn)的分配機(jī)制,而大的對(duì)象則使用系統(tǒng)的malloc 3 對(duì)于python對(duì)象饺窿,如整數(shù)歧焦,浮點(diǎn)數(shù)和list,都有獨(dú)立的私有內(nèi)存池肚医。也就是你分配又釋放了大量的整數(shù)绢馍,用于緩存這些整數(shù)的內(nèi)存就不能在分配給浮點(diǎn)數(shù)

2 lambda函數(shù)

lambda通常在需要一個(gè)函數(shù)卻不想去命名一個(gè)函數(shù)的場(chǎng)合下使用,也就是指匿名函數(shù)

lambda函數(shù):首要用途是指點(diǎn)短小的回調(diào)函數(shù)

lambda[arg]:expression

例如 a = lambda x,y:x+y

3 tuple list轉(zhuǎn)換

tuple(list) list(tuple)

4 刪除list里的重復(fù)元素

使用set函數(shù) set(list)

5 sorted與sort

Python list內(nèi)置sort()方法用來(lái)排序肠套,也可以用python內(nèi)置的全局sorted()方法來(lái)對(duì)可迭代的序列排序生成新的序列舰涌。

sorted(iterable,key=None,reverse=False)舵稠,返回新的列表入宦,對(duì)所有可迭代的對(duì)象均有效

sort(key=None,reverse=False) 就地改變列表 ?reverse:True反序室琢;False 正序

例如

>>>sorted([1,3,2,4,5])

[1,2,3,4,5]

>>>a=[5,4,3,2,1]

>>>a.sort()

>>>a

[1,2,3,4,5] #若用list.sort()則list本身將被修改

>>>sorted("This is a test string from Andrew".split(), key=str.lower)? #加了key盈滴,忽略大小寫

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']?????????????????#key=len按照長(zhǎng)度進(jìn)行排序

>>>sorted("This is a test string from Andrew".split()) ???#未加key,默認(rèn)大寫在前病苗,小寫在后

['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']

>>> student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]

>>> sorted(student_tuples, key=lambda student: student[2])?? # sort by age

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>>student_tuples.sort(key=lambda x: x[2])

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>>s=”Hello79351WorldMyNameIsMrFiona0352231964”

>>>''.join(sorted(s,key=lambda x: (x.isdigit(),x.isdigit() and int(x)%2==0,x.islower(),x.isupper(),x)))

'FHIMMNWaadeeilllmnooorrsy113335579902246'

大寫在前硫朦,小寫在后咬展,數(shù)字放在最后并且奇數(shù)在偶數(shù)之前

>>>s={‘a(chǎn)’:10,’t’:5,’c’:2,’b’:12}

>>>sorted(s,key=lambda x:x[0])

[‘a(chǎn)’,’b’,’c’,’t’]

>>>s=[]


一個(gè)學(xué)校瞒斩,有3個(gè)辦公室,現(xiàn)在有8位老師等待工位的分配祷舀,請(qǐng)編寫程序,完成隨機(jī)的分配

#encoding=utf-8importrandom

# 定義一個(gè)列表用來(lái)保存3個(gè)辦公室

offices = [[],[],[]]

# 定義一個(gè)列表用來(lái)存儲(chǔ)8位老師的名字

names = ['A','B','C','D','E','F','G','H']

i =0

for name in names:? ??

? ? ? index = random.randint(0,2)?

? ? ? offices[index].append(name)

i =1

for tempNames in offices:

? ? ? ?print('辦公室%d的人數(shù)為:%d'%(i,len(tempNames)))

? ? ? ?i+=1

? ? ? ?for name in tempNames:?

? ? ? ? ? ? ? print("%s"%name,end='')

? ? ? ? ? ? ? print("\n")?

? ? ? ? ? ? ? print("-"*20)

運(yùn)行結(jié)果如下:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市铺纽,隨后出現(xiàn)的幾起案子哟忍,更是在濱河造成了極大的恐慌,老刑警劉巖其馏,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叛复,死亡現(xiàn)場(chǎng)離奇詭異扔仓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撬码,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門呜笑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)彻犁,“玉大人,你說我怎么就攤上這事驼鹅“瘢” “怎么了疾宏?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵坎藐,是天一觀的道長(zhǎng)哼绑。 經(jīng)常有香客問我碉咆,道長(zhǎng),這世上最難降的妖魔是什么茂浮? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任席揽,我火速辦了婚禮谓厘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竟稳。我一直安慰自己,他們只是感情好聂宾,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布讲逛。 她就那樣靜靜地躺著岭埠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪许赃。 梳的紋絲不亂的頭發(fā)上馆类,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天乾巧,我揣著相機(jī)與錄音,去河邊找鬼沟于。 笑死旷太,一個(gè)胖子當(dāng)著我的面吹牛销睁,可吹牛的內(nèi)容都是我干的存崖。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼冗栗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贞瞒!你這毒婦竟也來(lái)了趁曼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乒融,失蹤者是張志新(化名)和其女友劉穎摄悯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體申钩,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撒遣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年义黎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豁跑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狐蜕,死狀恐怖卸夕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情湃累,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布蒙秒,位于F島的核電站,受9級(jí)特大地震影響晕讲,放射性物質(zhì)發(fā)生泄漏马澈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一勤婚、第九天 我趴在偏房一處隱蔽的房頂上張望涤伐。 院中可真熱鬧,春花似錦凝果、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至柑晒,卻和暖如春眷射,著一層夾襖步出監(jiān)牢的瞬間佛掖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工欧宜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冗茸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓夏漱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屎篱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子葵蒂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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

  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,583評(píng)論 1 118
  • 個(gè)人筆記秦士,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,715評(píng)論 0 5
  • 有一段時(shí)間沒有更新博客了伍宦,一是因?yàn)楣ぷ鲗?shí)在比較忙次洼,即使在年尾了遇骑,公司的產(chǎn)品還需要發(fā)版,第二個(gè)是在學(xué)習(xí)python語(yǔ)...
    BlainPeng閱讀 226評(píng)論 0 0
  • 最近我又開始拖拖拉拉亥啦、慢慢吞吞的去做事了练链。嚴(yán)重的時(shí)候,干脆撂挑子媒鼓,不干了,躺在床上睡大覺绿鸣。時(shí)間一點(diǎn)一點(diǎn)的消逝,最終...
    丁火火閱讀 808評(píng)論 0 2
  • E207 Japan's Mitsubishi corporation is making a big apolo...
    一日一譯閱讀 280評(píng)論 0 1