【Python基础】Python高级特性:切片、迭代、列表生成式、生成器与迭代器
? ??接著廖雪峰老師的學習教程,小編要開始加快推進Python的學習進程了。今天的筆記內容是Python高級特性,其中包括快速訪問對象類型元素的切片、循環中的迭代意義、方便的列表生成式操作以及生成器和迭代器。雖然有些苦逼,但是一想到數據科學家的遠大理想,小編就又能快馬加鞭的向前沖了!
>>>>
切片
????切片(slice)的功能類似于R語言中的取數或者訪問數據對象元素,但R中對象都是向量、矩陣數據框,在Py里面我們切片的作用對象是list、tuple或者dict等數據對象類型。假設一個list如下:
????如果我們想取用前3個元素,可以通過list的索引來做,但一旦元素個數過多,通過索引訪問的方法就行不通了。當然我們也可以通過寫for循環來遍歷對象的每個元素。但通常這些方法比起切片來都過于繁瑣:
????L[0:3]表示從索引0開始取,到索引3為止,但不包括索引3 的元素。如果第一個索引是0,還可以簡寫為:
????當然和之前一樣,我們也可以倒著訪問list對象:
????切片除了可以作用于list、tuple等對象類型,還可以對字符串等進行切片操作,在字符串中,切片的作用類似于一些字符處理函數,這里就不舉例說明了。這樣一來,有了切片操作以后,就無需去寫循環語句了。
>>>>
迭代
????如果我們通過for循環來遍歷一個list或者tuple對象,這種遍歷過程就可以稱之為迭代。只要for循環可以作用的對象類型,我們都可以對其進行迭代操作,如list、tuple或者dict,這些都可以稱作可迭代對象。如何判斷一個對象是否可迭代?我們可以通過導入collections模塊中的Iterable類型進行判斷:
????任何可迭代對象都可作用于for循環,包括我們自定義的數據對象,只要可以作用于for循環,都是可迭代對象。
>>>>
列表生成式
????列表生成式(list comprehensions),是Py內置的 一種簡單而又非常強大的創建列表的生成式。比方說我們可以用list(range(1:11))來生成1:11的數字列表:
????但如果我們要生成[1x1,2x2,3x3...,10x10]這樣的列表又該如何寫命令呢?一種方法就是寫循環:
????但正如我們前面所說,循環太繁瑣,能不用盡量不用,比竟Py的核心要義是簡潔,能一行代碼完成的事情絕對不用五行。上述循環用列表生成式語句一行即可搞定:
????for循環后面還可加上if條件判斷進行結果篩選:
>>>>
生成器
????列表生成器雖然方便,但占用內存比較大,很多時候我們都不需要完整list進行分析,因而Py中還有一種邊循環邊計算的機制,稱之為生成器:Generator。創建另一個生成器的方法有很多,但主要還是通過如下兩種方法:(1)直接創建法。(2)通過修改Py函數的print命令為yield。
????直接創建法很簡單,只需將列表生成式中的[ ]符號改成()即可:
????輸出g的結果表明對象g已經是一個generator了。我們可以通過for循環來訪問和調用generator的每一個元素:
????另一種創建生成器的方式為修改Py函數中print命令為yield命令即可。例如我們創建一個斐波那契數列表,但列表生成器無法直接生成,編寫函數則較為方便:
????我們修改上面函數定義中的print命令:
????這樣一修改,fibonacci就不再是一個普通的函數了,而是一個generator了:
>>>>
迭代器
????由前述我們知道,可以直接作用于for循環的對象我們稱之為可迭代對象:Iterable。使用collections模塊中的isinstance函數可以判斷一個對象是否可迭代。而生成器不但可以作用于for循環,還可以通過next()函數不斷返回下一個值,這樣的對象我們稱之為迭代器,Iterator。
????生成器都是迭代器,但list、tuple、dict等對象雖然是可迭代的(Iterable),但卻并不是迭代器(Iterator),如要將其變成迭代器,我們可以使用iter函數。我們可以寫一個關于楊輝三角的生成器(迭代器):
louwill學習參考資料:
廖雪峰老師Python官方教程
http://www.liaoxuefeng.com/
推文為該教程個人學習筆記
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群:總結
以上是生活随笔為你收集整理的【Python基础】Python高级特性:切片、迭代、列表生成式、生成器与迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】通俗讲解集成学习算法!
- 下一篇: 【机器学习基础】数学推导+纯Python