-
什么是dict 我們已經(jīng)知道,list 和 tuple 可以用來(lái)表示順序集合,例如,班里同學(xué)的名字: ['Adam', 'Lisa', 'Bart'] 或者考試的成績(jī)列表: [95, 85, 59] 但是,要根據(jù)名字找到對(duì)應(yīng)的成績(jī),用兩個(gè) list 表示就不方便。 如果把名字和分?jǐn)?shù)關(guān)聯(lián)起來(lái),組成類似的查找表: 'Adam' ==> 95 'Lisa' ==> 85 'Bart' ==> 59 給定一個(gè)名字,就可以直接查到分?jǐn)?shù)。 Python的 dict 就是專門干這件事的。用 dict 表示“名字”-“成績(jī)”的查找表如下: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 我們把名字稱為key,對(duì)應(yīng)的成績(jī)稱為value,dict就是通過(guò) key 來(lái)查找 value。 花括號(hào) {} 表示這是一個(gè)dict,然后按照 key: value, 寫出來(lái)即可。最后一個(gè) key: value 的逗號(hào)可以省略。 由于dict也是集合,len() 函數(shù)可以計(jì)算任意集合的大?。?>>> len(d) 3 注意: 一個(gè) key-value 算一個(gè),因此,dict大小為3。查看全部
-
1. isinstance(x, str) 可以判斷變量 x 是否是字符串; 2. 字符串的 upper() 方法可以返回大寫的字母。查看全部
-
復(fù)雜表達(dá)式 使用for循環(huán)的迭代不僅可以迭代普通的list,還可以迭代dict。 假設(shè)有如下的dict: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 完全可以通過(guò)一個(gè)復(fù)雜的列表生成式把它變成一個(gè) HTML 表格: tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()] print '<table>' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>' 注:字符串可以通過(guò) % 進(jìn)行格式化,用指定的參數(shù)替代 %s。字符串的join()方法可以把一個(gè) list 拼接成一個(gè)字符串。 把打印出來(lái)的結(jié)果保存為一個(gè)html文件,就可以在瀏覽器中看到效果了: <table border="1"> <tr><th>Name</th><th>Score</th><tr> <tr><td>Lisa</td><td>85</td></tr> <tr><td>Adam</td><td>95</td></tr> <tr><td>Bart</td><td>59</td></tr> </table> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score): if score<60: return '<tr><td>%s</td><td >%s</td></tr>' % (name, score) return '<tr><td>%s</td><td>%s</td></tr>' % (name, score) tds = [ generate_tr(name, score) for name, score in d.iteritems()] print '<table border="1">' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>'查看全部
-
寫列表生成式時(shí),把要生成的元素 x * x 放到前面,后面跟 for 循環(huán),就可以把list創(chuàng)建出來(lái). >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ##range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]查看全部
-
迭代dict的key和value 我們了解了如何迭代 dict 的key和value,那么,在一個(gè) for 循環(huán)中,能否同時(shí)迭代 key和value?答案是肯定的。 首先,我們看看 dict 對(duì)象的 items() 方法返回的值: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> print d.items() [('Lisa', 85), ('Adam', 95), ('Bart', 59)] 可以看到,items() 方法把dict對(duì)象轉(zhuǎn)換成了包含tuple的list,我們對(duì)這個(gè)list進(jìn)行迭代,可以同時(shí)獲得key和value: >>> for key, value in d.items(): ... print key, ':', value ... Lisa : 85 Adam : 95 Bart : 59 和 values() 有一個(gè) itervalues() 類似, items() 也有一個(gè)對(duì)應(yīng)的 iteritems(),iteritems() 不把dict轉(zhuǎn)換成list,而是在迭代過(guò)程中不斷給出 tuple,所以, iteritems() 不占用額外的內(nèi)存。查看全部
-
迭代dict的value 我們已經(jīng)了解了dict對(duì)象本身就是可迭代對(duì)象,用 for 循環(huán)直接迭代 dict,可以每次拿到dict的一個(gè)key。 如果我們希望迭代 dict 對(duì)象的value,應(yīng)該怎么做? dict 對(duì)象有一個(gè) values() 方法,這個(gè)方法把dict轉(zhuǎn)換成一個(gè)包含所有value的list,這樣,我們迭代的就是 dict的每一個(gè) value: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.values() # [85, 95, 59] for v in d.values(): print v # 85 # 95 # 59 那這兩個(gè)方法有何不同之處呢? 1. values() 方法實(shí)際上把一個(gè) dict 轉(zhuǎn)換成了包含 value 的list。 2. 但是 itervalues() 方法不會(huì)轉(zhuǎn)換,它會(huì)在迭代過(guò)程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節(jié)省了生成 list 所需的內(nèi)存。 3. 打印 itervalues() 發(fā)現(xiàn)它返回一個(gè) <dictionary-valueiterator> 對(duì)象,這說(shuō)明在Python中,for 循環(huán)可作用的迭代對(duì)象遠(yuǎn)不止 list,tuple,str,unicode,dict等,任何可迭代對(duì)象都可以作用于for循環(huán),而內(nèi)部如何迭代我們通常并不用關(guān)心查看全部
-
Python中,迭代永遠(yuǎn)是取出元素本身,而非元素的索引。 對(duì)于有序集合,元素確實(shí)是有索引的。有的時(shí)候,我們確實(shí)想在 for 循環(huán)中拿到索引,怎么辦? 方法是使用 enumerate() 函數(shù): >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L): ... print index, '-', name ... 0 - Adam 1 - Lisa 2 - Bart 3 - Paul zip()函數(shù)可以把兩個(gè) list 變成一個(gè) list: >>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')] range()函數(shù)可以創(chuàng)建一個(gè)數(shù)列: >>> range(1, 101) [1, 2, 3, ..., 100]查看全部
-
那這兩個(gè)方法有何不同之處呢? 1. values() 方法實(shí)際上把一個(gè) dict 轉(zhuǎn)換成了包含 value 的list。 2. 但是 itervalues() 方法不會(huì)轉(zhuǎn)換,它會(huì)在迭代過(guò)程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節(jié)省了生成 list 所需的內(nèi)存。 3. 打印 itervalues() 發(fā)現(xiàn)它返回一個(gè) <dictionary-valueiterator> 對(duì)象,這說(shuō)明在Python中,for 循環(huán)可作用的迭代對(duì)象遠(yuǎn)不止 list,tuple,str,unicode,dict等,任何可迭代對(duì)象都可以作用于for循環(huán),而內(nèi)部如何迭代我們通常并不用關(guān)心。 如果一個(gè)對(duì)象說(shuō)自己可迭代,那我們就直接用 for 循環(huán)去迭代它,可見(jiàn),迭代是一種抽象的數(shù)據(jù)操作,它不對(duì)迭代對(duì)象內(nèi)部的數(shù)據(jù)有任何要求。查看全部
-
注意: 集合是指包含一組元素的數(shù)據(jù)結(jié)構(gòu),我們已經(jīng)介紹的包括: 1. 有序集合:list,tuple,str和unicode; 2. 無(wú)序集合:set 3. 無(wú)序集合并且具有 key-value 對(duì):dict查看全部
-
Python格式上中最重要的內(nèi)容之一就是縮進(jìn)。 習(xí)題中return一定要與for循環(huán)保持并進(jìn)。查看全部
-
等差數(shù)列編輯?[děng chā shù liè] 等差數(shù)列是常見(jiàn)數(shù)列的一種,如果一個(gè)數(shù)列從第二項(xiàng)起,每一項(xiàng)與它的前一項(xiàng)的差等于同一個(gè)常數(shù),這個(gè)數(shù)列就叫做等差數(shù)列,而這個(gè)常數(shù)叫做等差數(shù)列的公差,公差常用字母d表示。 例如:1,3,5,7,9……1+2(n-1)。 通項(xiàng)公式為:an=a1+(n-1)*d。首項(xiàng)a1=1,公差d=2。 前n項(xiàng)和公式為:Sn=a1*n+【n*(n-1)*d】/2或Sn=【n*(a1+an)】/2。 注意:以上n均屬于正整數(shù)。查看全部
-
等差數(shù)列公式真的忘記了,索性百度 #coding: UTF-8 #公式套入 x1 = 1 d = 3 n = 100 x100 = x1+(n-1)*d s = x1*100+(n*(n-1)*d)/2 print s print x100 #標(biāo)準(zhǔn)答案 x1 = 1 d = 3 n = 100 x100 = x1 + (n - 1) * d s = (x1 + x100) * n / 2 print s查看全部
-
如果需要在代碼中使用中文注釋,必須在python文件的最前面加上如下注釋說(shuō)明: #-* - coding: UTF-8 -* -查看全部
-
1. values() 方法實(shí)際上把一個(gè) dict 轉(zhuǎn)換成了包含 value 的list。 2. 但是 itervalues() 方法不會(huì)轉(zhuǎn)換,它會(huì)在迭代過(guò)程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節(jié)省了生成 list 所需的內(nèi)存。 3. 打印 itervalues() 發(fā)現(xiàn)它返回一個(gè) <dictionary-valueiterator> 對(duì)象,這說(shuō)明在Python中,for 循環(huán)可作用的迭代對(duì)象遠(yuǎn)不止 list,tuple,str,unicode,dict等,任何可迭代對(duì)象都可以作用于for循環(huán),而內(nèi)部如何迭代我們通常并不用關(guān)心。 如果一個(gè)對(duì)象說(shuō)自己可迭代,那我們就直接用 for 循環(huán)去迭代它,可見(jiàn),迭代是一種抽象的數(shù)據(jù)操作,它不對(duì)迭代對(duì)象內(nèi)部的數(shù)據(jù)有任何要求。查看全部
-
zip()函數(shù)可以把兩個(gè) list 變成一個(gè) list: >>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')] >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L): ... print index, '-', name ... 0 - Adam 1 - Lisa 2 - Bart 3 - Paul 使用 enumerate() 函數(shù),我們可以在for循環(huán)中同時(shí)綁定索引index和元素name。但是,這不是 enumerate() 的特殊語(yǔ)法。實(shí)際上,enumerate() 函數(shù)把: ['Adam', 'Lisa', 'Bart', 'Paul'] 變成了類似: [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]查看全部
舉報(bào)
0/150
提交
取消