日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者:閑歡

來源:Python/ target=_blank class=infotextkey>Python 技術

判斷一個程序員水平的高低,不能光看他的發量,也不能光看他的代碼量,還要看他代碼蘊含的思想,代碼的質量。代碼蘊含的思想主要體現在各種設計模式的運用上,而代碼的質量就既要實現需求,又要保證代碼的簡潔優雅。保證代碼質量是需要長期積累,養成良好的編程習慣,不斷思考優化的。

今天就給大家介紹一種實用的保證代碼簡潔的武功—— Python 推導四式。

什么是推導式

推導式 comprehensions(又稱解析式),是 python 的一種獨有特性。推導式是可以從一個數據序列構建另一個新的數據序列。

看定義很抽象,下面我們來看看具體的例子,通過例子來學習這四種推導式。

列表推導式

我們先來看一個需求:

快速創建一個包含元素1-9的平方的列表

面對這個需求,我們通常的實現方式是這樣的:

lis = []
for i in range(1, 10):
    lis.Append(i*i)
print(lis) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

用列表推導式怎么實現呢?你只需要一行代碼:

lis = [x * x for x in range(1, 10)]
print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

這就是推導式。我們可以看到列推導式的語法是這樣的:

變量名 = [表達式 for 變量 in 列表]

再來一個復雜點的:

list = [x * y for x in range(1, 10) for y in range(1, 10)]
print(lis)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

這個是多個變量的類型,因此我們可以擴展上面的語法:

變量名 = [表達式 for 變量 in 列表 for 變量 in xxx]

當然,還有一種帶條件的列推導式,它的語法是這樣的:

變量名 = [表達式 for 變量 in 列表 if 條件]

我們來看一個需求:快速創建一個包含1-10之間所有偶數的列表。

lis = [i for i in range(1, 11) if i % 2 == 0]
print(lis) # [2, 4, 6, 8, 10]

字典推導式

字典推導式的形式和列表推導式類似,語法也是類似的,只不過字典推導式返回的結果是字典。

變量名 = {key: value表達式}

我們來看一個例子:

dic = {x: x/2 for x in range(1,11) if x % 2 == 0}
print(dic) # {2: 1.0, 4: 2.0, 6: 3.0, 8: 4.0, 10: 5.0}

如果這里我寫成下面這種方式,返回的結果是什么呢?

dic = {'half': x/2 for x in range(1,11) if x % 2 == 0}
print(dic)

大家可以自己嘗試運行一下,看跟你想的結果是不是一樣的。

集合推導式

看了前面兩個推導式,想必你已經知道集合推導式怎么寫了。語法如下:

變量名 = {表達式 for 變量 in 列表 for 變量 in xxx}

或者

變量名 = {表達式 for 變量 in 列表 if 條件}

來一個實際的例子:創建一個存儲10個偶數的集合。

set1 = {x for x in range(10) if x % 2 == 0}
print(set1) # {0, 2, 4, 6, 8}

元組推導式

我們先來看一個例子:

tup=(x for x in range(1,10))
print(tup) # <generator object <genexpr> at 0x1101fade0>

看到這個結果打印是不是有點懵?

上面的代碼返回的變量其實是一個生成器,并不是一個元組。其實沒有真正的元組推導式,我們只能用一個類似的方法來生成元組,暫且叫做“偽元組推導式”吧。

上面的例子我們來改進一下:

tup=tuple(x for x in range(1,10))
print(tup) # (1, 2, 3, 4, 5, 6, 7, 8, 9)

在前面加上 tuple 來顯式進行類型轉換就行了。

總結

這里介紹了四種 python 的推導式,主要是用來簡化 循環的代碼,生成不同的數據結構用的。當然,從這些基礎的表達式語法出發,還可以運用到復雜的推導式,大家在寫代碼時留心使用就會發現它的強大之處。這種一行代碼既簡潔明了,又可以在新手面前炫技,用起來不要太爽!

分享到:
標簽:代碼 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定