python3 推導式大總結

推導式 --總結並引出 生成器推導式函數

 

##列表推導式測試

>>> a = [i for i in range(100) if not(i%2) and i%3] ##注意列表是中括號 三項內容 變量 循環體 判斷條件
>>> a #輸出爲符合判斷條件的結果 100之內能被2整除的數字
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98] >>>

 

##字典推導式spa

>>> b = {i : i %2 ==0 for i in range(20)} ##字典推導式注意 那個獨特的 冒號 ':' 三項內容 變量 條件 循環體
>>> b ##和列表推導式不同的就是輸出的結果,若是判斷條件成立 輸出就是True 不然輸出False
{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True, 11: False, 12: True, 13: False, 14: True, 15: False, 16: True, 17: False, 18: True, 19: False} >>>

 

##集合推導式code

>>> c ={i for i in [1,1,2,5,6,48,7,9,6,5,4,1,2,3,65,2,6,52,6,9,5]} ##集合推導式要注意的是 他和字典推導式的區別和聯繫 練習是 外部都是用的[]中括號的 不一樣就很明顯了 兩項內容 變量 循環體 
>>> c ##輸出內容 爲本例中的列表的非重複輸出
{1, 2, 3, 4, 5, 6, 7, 9, 48, 52, 65} >>>

'''集合(set)是一個無序不重複元素的序列。
它的主要做用以下:
去重,把一個列表變成集合,就自動去重了
關係測試,測試兩組數據以前的交集、差集、並集等關係
set和dict相似,也是一組key的集合,但不存儲value。因爲key不能重複,因此,在set中,沒有重複的key
可使用大括號 { } 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 { },由於 { } 是用來建立一個空字典。'''    --------這一句總結來自網友 @奮鬥中的鹹魚blog

###字符串推導式 看看行不行字符串

>>> d = "i for i in 'I love you!'"
>>> d "i for i in 'I love you!'" ##我* 果真不能夠 ,咱們看到 這個雙括號中的字符串 被原版的打印出來了 並無作任何和其餘推導式那樣子的工做
>>>

###那麼還有什麼能夠玩一下推導式那 ,是否是還有元組推導式沒有玩過 ,好吧 下面翻她的牌generator

>>> e = (i for i in range(10)) ###元組使用小括號括起來的
>>> e <generator object <genexpr> at 0x00000000034305E8> ###哎 怎回事,輸出有點不同啊,第一個單詞好像叫作生成器的,對了,這個是生成器的推導式了,這裏就是引出這個傢伙的
>>> next(e) ##是生成器就可使用next()這個函數類查看了
0 >>> next(e) 1
>>> next(e) 2
>>> next(e) 3
>>> for i in e: ##想了一下 上邊的一個一個輸出太慢了 來一個循環吧 把剩下的內容搞出來
print(i) 4
5
6
7
8
9
>>>

#至此咱們看到了原來元組是沒有推導式的,他的書寫格式原來是生成器的推導式,好吧記下來吧!元組原來和生成器還有這樣的私交啊!class

##還有一句話要說,這裏咱們找了生成器的推導式,那麼生成器還有一個比較騷的操做 ,那就是生成器推導式若是做爲一個函數的參數時,他能夠直接寫推導式而不用帶上本身的小括號裏(把衣服拔掉了 嘿嘿) 樣子就像下邊的變量

>>> sum((i for i in range(10))) 45

>>> sum(i for i in range(10)) 45
>>>

##這個操做就是上邊的對比了,去掉小括號吧(我養你)object

 

感謝:小甲魚

相關文章
相關標籤/搜索