在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

?Python 3.8:海象運算符的三種用法

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 11:07 ? 次閱讀

Python 版本發展非常快,如今最新的版本已經是 Pyhton 3.9,即便如此,有很多人甚至還停留在 3.6 或者 3.7,連 3.8 還沒用上。

很多 Python 3.8 的特性還沒來得及了解,就已經成為舊知識了,比如今天要說的海象運算符。

海象運算符是在 PEP 572 被提出的,直到 3.8 版本合入發布。

它的英文原名叫 Assignment Expressions,翻譯過來也就是 賦值表達式,不過現在大家更普遍地稱之為海象運算符,就是因為它長得真的太像海象了。

1. 第一個用法:if/else

可能有朋友是第一次接觸這個新特性,所以還是簡單的介紹一下這個海象運算符有什么用?

在 Golang 中的條件語句可以直接在 if 中運算變量的獲取后直接對這個變量進行判斷,可以讓你少寫一行代碼

import "fmt"

func main() {
    if age := 20;age > 18 {
        fmt.Println("已經成年了")
    }
}

若在 Python 3.8 之前,Python 必須得這樣子寫

age = 20
if age > 18:
    print("已經成年了")

但有了海象運算符之后,你可以和 Golang 一樣(如果你沒學過 Golang,那這里要注意,Golang 中的 := 叫短變量聲明,意思是聲明并初始化,它和 Python 中的 := 不是一個概念)

if (age:= 20) > 18:
    print("已經成年了")

2. 第二個用法:while

在不使用 海象運算符之前,使用 while 循環來讀取文件的時候,你也許會這么寫

file = open("demo.txt", "r")
while True:
    line = file.readline()
    if not line:
        break
    print(line.strip())

但有了海象運算符之后,你可以這樣

file = open("demo.txt", "r")
while (line := file.readline()):
    print(line.strip())

使用它替換以往的無限 while 循環寫法更為驚艷

比如,實現一個需要命令行交互輸入密碼并檢驗的代碼,你也許會這樣子寫

while True:
   p = input("Enter the password: ")
   if p == "youpassword":
      break

有了海象運算符之后,這樣子寫更為舒服

while (p := input("Enter the password: ")) != "youpassword":
   continue

3. 第三個用法:推導式

這個系列的文章,幾乎每篇都能看到推導式的身影,這一篇依舊如此。

在編碼過程中,我很喜歡使用推導式,在簡單的應用場景下,它簡潔且不失高效。

如下這段代碼中,我會使用列表推導式得出所有會員中過于肥胖的人的 bmi 指數

members = [
    {"name": "小五", "age": 23, "height": 1.75, "weight": 72},
    {"name": "小李", "age": 17, "height": 1.72, "weight": 63},
    {"name": "小陳", "age": 20, "height": 1.78, "weight": 82},
]

count = 0

def get_bmi(info):
    global count
    count += 1

    print(f"執行了 {count} 次")

    height = info["height"]
    weight = info["weight"]

    return weight / (height**2)

# 查出所有會員中過于肥胖的人的 bmi 指數
fat_bmis = [get_bmi(m) for m in members if get_bmi(m) > 24]

print(fat_bmis)

輸出如下

執行了 1 次
執行了 2 次
執行了 3 次
執行了 4[25.88057063502083]

可以看到,會員數只有 3 個,但是 get_bmi 函數卻執行了 4 次,原因是在判斷時執行了 3 次,而在構造新的列表時又重復執行了一遍。

如果所有會員都是過于肥胖的,那最終將執行 6 次,這種在大量的數據下是比較浪費性能的,因此對于這種結構,我通常會使用傳統的for 循環 + if 判斷。

fat_bmis = []

# 查出所有會員中過于肥胖的人的 bmi 指數
for m in members:
    bmi = get_bmi(m)
    if bmi > 24:
        fat_bmis.append(bmi)

在有了海象運算符之后,你就可以不用在這種場景下做出妥協。

# 查出所有會員中過于肥胖的人的 bmi 指數
fat_bmis = [bmi for m in members if (bmi := get_bmi(m)) > 24]

最終從輸出結果可以看出,只執行了 3 次

執行了 1 次
執行了 2 次
執行了 3[25.88057063502083]

這里僅介紹了列表推導式,但在字典推導式和集合推導式中同樣適用。不再演示。

海象運算符,是一個新奇的特性,有不少人覺得這樣這種特性會破壞代碼的可讀性。確實在一個新鮮事物剛出來時是會這樣,但我相信經過時間的沉淀后,越來越多的人使用它并享受它帶來的便利時,這種爭議也會慢慢消失在歷史的長河中。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 文件
    +關注

    關注

    1

    文章

    566

    瀏覽量

    24756
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84711
  • 運算符
    +關注

    關注

    0

    文章

    172

    瀏覽量

    11084
收藏 人收藏

    評論

    相關推薦

    C語言中位運算符的高級用法(1)

    在上一篇文章中,我們介紹了&運算符的基礎用法,本篇文章,我們將介紹& 運算符的一些高級用法
    發表于 08-22 10:44 ?324次閱讀
    C語言中位<b class='flag-5'>運算符</b>的高級<b class='flag-5'>用法</b>(1)

    C語言中位運算符的高級用法(2)

    在上一篇文章中,我們介紹了&運算符的高級用法,本篇文章,我們將介紹| 運算符的一些高級用法
    發表于 08-22 10:45 ?332次閱讀
    C語言中位<b class='flag-5'>運算符</b>的高級<b class='flag-5'>用法</b>(2)

    C語言中位運算符的高級用法(3)

    在上一篇文章中,我們介紹了|運算符的高級用法,本篇文章,我們將介紹^ 運算符的一些高級用法
    發表于 08-22 10:47 ?258次閱讀
    C語言中位<b class='flag-5'>運算符</b>的高級<b class='flag-5'>用法</b>(3)

    C語言中位運算符的高級用法(4)

    在上一篇文章中,我們介紹了^運算符的高級用法,本篇文章,我們將介紹~ 運算符的一些高級用法
    發表于 08-22 10:48 ?224次閱讀
    C語言中位<b class='flag-5'>運算符</b>的高級<b class='flag-5'>用法</b>(4)

    C語言中位運算符的高級用法(5)

    在上一篇文章中,我們介紹了~運算符的高級用法,本篇文章,我們將介紹
    發表于 08-22 10:49 ?352次閱讀
    C語言中位<b class='flag-5'>運算符</b>的高級<b class='flag-5'>用法</b>(5)

    2.7 python運算符

    2.7 python運算符0. 什么是運算符?本章節主要說明Python運算符。舉個簡單的例子 4 +5 = 9 。 例子中,4和5被稱為
    發表于 02-21 16:43

    移位運算符的應用實例講解

    移位運算符在程序設計中,是位操作運算符的一。移位運算符可以在二進制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種:(帶符號
    的頭像 發表于 11-19 07:04 ?3520次閱讀
    移位<b class='flag-5'>運算符</b>的應用實例講解

    干貨:大實例講解三種C++運算符重載

    本章節主要講解是運算符重載。運算符重載是賦予運算符能操作自定義類型的功能。C++運算符重載主要分為以下類:
    的頭像 發表于 09-30 16:59 ?3451次閱讀
    干貨:<b class='flag-5'>三</b>大實例講解<b class='flag-5'>三種</b>C++<b class='flag-5'>運算符</b>重載

    python運算符是什么

    python運算符 0. 什么是運算符? 本章節主要說明Python運算符。舉個簡單的例子 4 +5 = 9 。 例子中,4和5被稱為操作
    的頭像 發表于 02-21 16:44 ?2389次閱讀

    條件(元)運算符

    RTL建模中廣泛使用的運算符是條件運算符,也稱為運算符,該運算符用于在兩個表達式之間進行選擇——表5-2列出了用于表示條件
    的頭像 發表于 02-09 15:42 ?1370次閱讀
    條件(<b class='flag-5'>三</b>元)<b class='flag-5'>運算符</b>

    c語言運算符及例題

    C語言中邏輯運算符包含邏輯與&&、邏輯或||、邏輯非!三種。其中邏輯與&&是雙目運算符,即需要運算符兩邊都要有表達式,且兩邊表達式都為真,此表達式才為真;邏輯||也是雙目
    發表于 02-16 16:14 ?0次下載

    Python運算符介紹

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 位運算符 按位運算符是把數字看作二進制來進行計算的。Python中的按位
    的頭像 發表于 03-08 17:22 ?1120次閱讀

    python運算符優先級順序口訣

    Python是一非常流行的編程語言,具有廣泛的應用領域。在Python中,運算符是進行各種數學和邏輯運算的關鍵部分。了解
    的頭像 發表于 11-22 14:34 ?2636次閱讀

    python運算符的優先級大小

    Python運算符的優先級決定了表達式中各個運算符的計算順序。了解運算符的優先級對于正確理解和編寫復雜的表達式非常重要。本文將詳細介紹Python
    的頭像 發表于 11-29 16:21 ?3430次閱讀

    邏輯異或運算符Python中的用法

    Python編程語言中,邏輯異或運算符并不直接作為一個內置的操作存在,因為Python更側重于高級編程和可讀性,并沒有直接提供異或運算符
    的頭像 發表于 11-19 09:46 ?191次閱讀
    主站蜘蛛池模板: 伊人成人在线| www.色视频| 日韩一级一欧美一级国产| 午夜黄色福利| 无遮挡很爽很污很黄很色的网站| 亚洲人成网站色在线观看| 亚洲人成网站在线| 四虎在线精品免费高清在线| 日韩精品毛片| 免费观看欧美一级片| 久久久久久国产精品免费| 国产婷婷色一区二区三区深爱网| 色资源在线观看| 日韩黄a级成人毛片| 欧美人与禽| 国产丝袜va丝袜老师| 哟交小u女国产精品视频 | 一区二区在线观看高清| 色视频一区二区三区| 日本一区免费观看| 正在播放国产巨作| 日本一区二区三区视频在线 | 午夜精品在线观看| 人人玩人人添天天爽| 国产国拍亚洲精品mv在线观看| 国产免费啪啪| 在线免费日韩| 日韩高清一级| 国产高清一区二区| 天堂在线www在线资源| bt天堂在线最新版在线| 免费视频黄| 色噜噜狠狠狠狠色综合久| 四虎精品久久| 久久久久四虎国产精品| 1000部啪啪勿入十八免费| www.91久久| 久久天天躁狠狠躁夜夜躁| 免费久久久久| 49pao强力免费打造在线高清| 爱情岛网站亚洲禁18进入|