1. 程式人生 > >python學習筆記(7)-高階特性(三)-列表生成式與生成器

python學習筆記(7)-高階特性(三)-列表生成式與生成器

 [d for d in os.listdir('.')] ['.bash_logout', '.bash_profile', '.bashrc', '.cshrc', '.tcshrc', 'anaconda-ks.cfg', '.cache', '.config', 'perl5', '.bash_history', '.xauthSISijM', '.emacs.d', '.xauthjUi1P2', '.rediscli_history', '.xauthjgRdbk', '.mysql_history', '.viminfo.tmp', '.pki', '.ssh', '.viminfo'] 把列表元素換成小寫。

>>> L = ['XiaoMing','XiaoFang','XiaoWang'] >>> [l.lower() for l in L] ['xiaoming', 'xiaofang', 'xiaowang'] 2.生成器 通過列表生成式,可以建立一個列表,但是受到記憶體限制,列表的容量是有限的,而且建立一個包含100W個元素的列表,不僅佔用很大的儲存空間,如果我們僅僅需要訪問前面幾個需要的元素,那後面絕大多數的元素佔用的空間就浪費了。在python中,生成器(Generator)就是這樣一種邊迴圈邊計算,在迴圈的過程中不斷的推算後面的元素的機制,這樣不必建立完整的list,從而節省了大量空間。 >>> L = [x * x for x in range(1,11)] >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> G = (x * x for x in range(1,11)) >>> G <generator object <genexpr> at 0x7fe6980bd0f0> >>> G.next() 1 >>> G.next() 4 >>> G.next() 9 >>> G.next() 16