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