1. 程式人生 > >python3 推導式大總結

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]
>>>

##字典推導式

>>> 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}
>>>

##集合推導式

>>> 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() 而不是 { },因為 { } 是用來創建一個空字典。‘‘‘ --------這一句總結來自網友 @奮鬥中的鹹魚

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

>>> d = "i for i in ‘I love you!‘"
>>> d
"i for i in ‘I love you!‘" ##我* 果然不可以 ,我們看到 這個雙括號中的字符串 被原版的打印出來了 並沒有做任何和其他推導式那樣子的工作
>>>

###那麽還有什麽可以玩一下推導式那 ,是不是還有元組推導式沒有玩過 ,好吧 下面翻她的牌

>>> 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
>>> 

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

##還有一句話要說,這裏我們找了生成器的推導式,那麽生成器還有一個比較騷的操作 ,那就是生成器推導式如果作為一個函數的參數時,他可以直接寫推導式而不用帶上自己的小括號裏(把衣服拔掉了 嘿嘿) 樣子就像下邊的

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

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

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

感謝:小甲魚

python3 推導式大總結