最近有許多小夥伴問我要入門 Python 的資料,還有小夥伴完全沒有入門 Python 就直接購買了我的 pandas 專欄。因此我決定寫幾篇 Python 數據處理分析必備的入門知識系列文章,以幫助有需要的小夥伴們更好入門。
前言
本節將學習基本的判斷與遍歷方式,立刻開始。
邏輯與布爾值
在實際生活中,我們經常根據條件判斷進而作出不同的行爲。
比如:"如果明天下雨,那麼我就待在家裏,否則我就出門"
編程語言中自然也需要提供這樣的語法,進而描述出類似的語義
我們用文本內容表達環境情況,代碼如下:
82 年 18 月 71號考試075分 去掉文字加我的裙
變量 env_tmr 保存一個文本(字符串),之後我們根據這個字符串內容做出判斷,從而打印出不同的內容如果對照中文意思,如圖:
上面重點關注的是,怎麼對比出來變量env_tmr的內容是不是符合我們的要求。
env_tmr == '下雨' ,用 雙等號 ,判斷2邊的值是否相等這裏的語義是:"變量 env_tmr 等於 文本內容'下雨'",結果返回的 True,表示這描述是正確的。如果結果返回 False ,則表示其描述不正確True 或 False 就是 bool 值由於一個"等號"表示:把右邊的值賦值給左邊的變量,因此判斷的邏輯只能使用"雙等號"表示
因此,其實一開始的if else寫法,if只是根據後面的bool值做判斷,然後調用不同行的代碼而已:
如果直接在 if 後面寫 True,那麼代碼總是會執行 if True : 下面的代碼 —— print('待在家裏')如果爲 False,那麼 Python 只是不執行其下方縮進的代碼if與else不需要一起出現,實際上他們有各自表達的意思:
當 if 的代碼區被執行時(上圖總是True,因此總是被執行),else 的區域則不會被執行當 if 的代碼區沒有被執行(if 後面的 bool 值爲 False),else 的區域纔會被執行else 必需配合 上方的 if ,else 不能單獨出現。沒有"如果",那麼"否則"是沒有任何意義的if True : 下方有相同縮進的語句,會被歸入 if 的代碼區,else 同樣如此
來看看如何表達:"如果下雨,我拿傘,然後出門":
現在不需要表達"否則"的語義,因此不再需要 else序列
在說遍歷之前,要先知道序列這玩意。
我們之前有學過用變量表示一個值(可以是數值也可以是文本),但有時候我們希望表達一系列的值,比如:從0到10的10個數值
Python中有許多不同類型的東西可以表達這語義,這裏簡單介紹列表:
[1,2,3] ,生成了一個列表,列表中有3個數值nums = [1,2,3] ,用變量 nums 表示第一步生成的列表(把等號右邊的列表賦值給左邊的變量)。此時,變量 nums 表示一個數值序列nums[0] ,獲取列表中第1個元素更準確的描述是"把等號右邊的列表的引用,賦給左邊的變量" 本系列後續文章會詳細講解常用的序列類型,這裏先點到即止
遍歷與循環
如果我們需要從一個序列中獲取每個值做處理,難道要一次次寫 nums[0]、nums[1] 的代碼嗎?而且我還不一定知道這序列裏面有多少個值
Python 提供了 for 語法自動遍歷序列中的元素。
表達:"從變量nums中獲取每個數值,然後打印出來"的同語義代碼如下:
for n in nums: 表示"從變量 nums 中獲取每個數值"。通常來說,你都需要獲取當前處理的數值。因此,Python 會把當前的數值賦值給變量 n ,讓你可以在 for 的代碼區中通過變量 n 得到當前的數值如下示意圖,表示流程:
for 的代碼區被執行了3次,每次 Python 都會把序列中的數值付給變量 n有時候我們只是想遍歷指定次數,比如:"輸出10次內容'test'"。我們總不可能寫代碼定義一個有10個數值的列表吧。
Python提供了一個快速輸出序列的方法:
range(10) ,生成一個有10個元素的序列range 得到的不是列表,而是生成器。具體內容,可以查看我的文章"Python進階系列:Python遍歷的祕密"
你可能注意到,我們上面的代碼中的遍歷n其實沒有任何意義。一般來說,在Python如果覺得某個返回值沒有意義,我們會使用一個下劃線表示:
總結
if 表示"如果",else 表示"否則",eles 必需在配合 if 存在for 可以遍歷一個序列range 可以快速生成有規律的序列下一節介紹 Python 中常用的集合數據結構,敬請關注。