Python 入門教學-邏輯運算子(附Python程式碼)

行銷資料科學
Marketingdatascience
8 min readJun 23, 2021

回想過去在學習統計學時,各位應該對於「條件機率」的觀念並不陌生,而顧名思義,條件機率的設立就會牽涉到如何設定所謂「條件」,在這個時候,邏輯運算子(logical operator)就要派上用場了。除了計算條件機率分配之外,在進行流程控制時,我們也常會用到邏輯運算子來與程式溝通。

邏輯運算其實就是描述資料之間「且(交集)」、「或(聯集)」以及「非(餘集)」的各種關係,若要將其視覺化,我們通常會使用如圖1所示的文氏圖來做表示。從圖1的例子中,若要描述何為「行銷資料科學」,則可將其稱為「行銷管理」、「資訊科技」、「數學/統計」三者的交集。透過圖形,我們可以藉此讓我們對於邏輯運算有一個初步的了解,也可以由此認識到程式語言是如何描述這些集合的。

圖 1 行銷資料科學的文氏圖

今日的主題,要帶大家了解「關係運算子」、「邏輯判斷式」及「邏輯運算子」之間的關係。

以下我們將和各位分享Python中進行基本邏輯運算式的不同變化!

一、布林代數

布林代數(Boolean)或稱布林變數,是程式語言中描述「邏輯」的一個資料型態,會使用在描述「是」或「否」的情境中。因此,布林變數的值只會有「True」以及「False」兩種。而若一個向量中的每個元素都是布林代數,則稱其為布林向量。

二、關係運算子與邏輯判斷式

資料分析經常是由數十行、數百行甚或數千行的邏輯判斷式[u1] 形成的。而在進行資料分析時,經常會需要不斷地對資料進行比對或是篩選,在這個時候,就更需要使用邏輯判斷式。

在進入邏輯判斷式之前,要先跟大家介紹一些重要的基本關係運算子(Relational Operator),因為我們在做資料解析判斷時,常常會下一些條件,而關係運算子,就是組成邏輯判斷式的重要角色。

常見的關係運算子有「>」大於、「<」小於、「>=」不小於、「<=」不大於、「==」等於以及「!=」不等於。

以上的關係運算子都很直觀,但是後面的「==」與「=」是不是讓您有點難理解,這也是大多初學者在這裡較易搞混的。特別是後續加上分析後,若是沒有建立好這裡的好觀念,常常會因為設定錯誤,出現小小的bug,影響甚大。在Python的語法中,由於Python為了要區別變數宣告和邏輯運算兩個差異,因此特別將變數的比對以兩個等號的「==」型式作為表示。

邏輯判斷式就是將兩個或多個變數透過關係運算子進行比較,以獲得「True」或「False」的結果,也就是說,透過邏輯判斷式所得到的結果會是個布林代數。如下範例,我們宣告一個變數a為3,並且拿它與7這個數字進行各種比較。看看不同的比對下,其「True」或「False」的結果,如下程式碼1。

程式碼1:

a = 3  # 宣告變數a為3,此式不會有產出print(a > 7)   # 計算3是否「大於」7print(a < 7)   # 計算3是否「小於」7print(a >= 7)  # 計算3是否「大於等於」7print(a <= 7)  # 計算3是否「小於等於」7print(a == 7)  # 計算3是否「等於」7print(a != 7)  # 計算3是否「不等於」7

產出:

FalseTrueFalseTrueFalseTrue

三、邏輯運算子

接著,談到邏輯運算子(Logical Operator),簡而言之,其就是在討論兩個或多個邏輯判斷式之間的關係。

常見邏輯運算子~

可以分為以下三種 :「且(and)」、「或(or)」以及「非(not)」

前面兩個和我們一般的認知相同也非常好理解,其中比較需要特別做說明的為「非(not)」。這個運算子的功能為「反轉」邏輯運算的結果,也就是說,若原本運算的所得之結果為「True」,而我們若在原邏輯運算式的前面加個「not」,就會得到「False」的答案。

邏輯運算子這部分在Python中的操作相當直觀,只需要透過輸入邏輯運算子的英文作為指令就可以在在多個邏輯判斷式之間進行運算。只需在「非(not)」的使用下,頭腦特別在轉一下彎,就會運用自如。以下,我們將延續上述「a = 3」的這個例子來為各位做說明,看看二個邏輯運算式的比對,就能理解邏輯運算子在兩個式子中不同的比對功能,如程式碼2。

程式碼2:

a = 3  # 宣告變數a為3,此式不會有產出(a > 1) and (a < 5)  #True and True(a > 1) and (a > 5)  #True and False(a < 1) and (a > 5)  #False and False(a > 1) or (a < 5)   #True or True(a > 1) or (a > 5)   #True or False(a < 1) or (a > 5)   #False or Falsenot(a > 1)           #NOT True

產出:

TrueFalseFalseTrueTrueFalseFalse

在此,我特別挑了初學者很可能會有疑惑的兩條式子:

程式碼3:

a = 3  # 宣告變數a為3,此式不會有產出(a > 1) and (a > 5)  #True and False(a > 1) or (a > 5)   #True or False

產出:

FalseTrue

我們首先來看看上面的兩個邏輯命題,可以發現第一個命題(a>1)為真,但但第二個命題(a>5)不真,對於不真(False)的集合,其實就可以把它當作是一個空集合,那一個空集合與任意集合做交集,肯定會是一個空集合,這就是為何第一個邏輯運算式的產出結果為False的原因。

我們在此同樣以「行銷資料科學」的文氏圖來做舉例,如圖1所示。比如我們說「行銷資訊系統是資訊科技」且「行銷資訊系統是數學/統計」,請問這個命題是True還是False?

我們可以從圖1中看出,命題的前半部分是True,而後半是False(因為「行銷資訊系統」與「數學/統計」兩者的交集為空集合)。那從前面的討論可以得知,這個命題的答案為False,因為空集合與任意集合的交集也還會是空集合。

回到上面的第二個邏輯運算式,也就是「聯集」的範例。聯集相較於交集,其成立條件較為寬鬆,只要命題中有一個部分成立,即為成立。同樣以「行銷資料科學」的文氏圖來做舉例。我們說「行銷資訊系統是資訊科技」或「行銷資訊系統是數學/統計」,請問這個命題是True還是False?

答案當然為True,因為從圖中可看出「行銷資訊系統是資訊科技」明顯是對的,即使另外一個部分不成立,整個命題仍是成立的。

以上就是簡單的運用關係運算子、邏輯運算式及邏輯運算子的一些小變化,讓大家對於Python的邏輯運算有基礎的認識。

透過以上的邏輯運算,我們可以很快速地看到變數之間的關係以及異同,而不只是數值運算,也可以應用於字串的比對。邏輯運算與未來的流程控制、資料篩選等應用息息相關,這些部分有機會,我們也將在後頭的文章與大家介紹,但還是不能忘記本篇基本功的重要性唷!

作者:黃海潮(臺灣行銷研究特邀作者)、徐子皓(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

【防疫新運動,直播學習一起GO!TMR暑期最新直播課程】

為了讓大家在防疫期間也能宅出數位競爭力、學習不間斷!
TMR推出直播課程,現在相揪上課還有團報優惠!
兩人團報,好友一起現享 95折
三人團報,多人共學現享 9折
一個人也別怕,還有早鳥獨享優惠價

◆◆◆Python 全系列課程◆◆◆

7/17+7/18
【Python 入門基礎實戰-找出VIP客戶】

7/31+8/1
【超速學習⚡STP行銷策略 Python 商業實務絕對上手班】

8/21+8/22
【實戰演練Python X 購物籃🛒多商品推薦組合分析】

◆◆◆Excel 全系列課程◆◆◆

7/24+8/7
【 行銷人必備⚡Excel商業分析儀錶板案例實戰】

8/14+8/15
【Excel Power BI 動態儀錶板⚡顧客分群 X 顧客樣貌 X 廣告效益評估】

8/28
【行銷核心關鍵⚡Excel Power BI 購物籃分析實戰】

— — — — — — — — — — — — — — — —

往後的文章都會持續在行銷資料科學粉絲專頁上發表喔,喜歡我們就趕緊追蹤吧!

同時再請大家多多follow我們的FB粉絲專頁,我們會在粉專上即時公布最新資訊,讓您重要消息不漏接!

FB粉絲專頁:行銷資料科學

官網:臺灣行銷研究

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

--

--

行銷資料科學
Marketingdatascience

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR