国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小李飛刀:python請你輕輕輕點虐

Keagan / 3054人閱讀

摘要:迭代器可以直接作用于循環的對象統稱為可迭代對象。可以被函數調用并不斷返回下一個值的對象稱為迭代器。這個高階函數,關鍵在于正確實現一個篩選函數。

又是日常嘮嗑的一小段

真的是非常話嘮的在下,日常給自己打點雞血吧。
昨晚和老媽聊了一整晚,所以昨天并沒有更新
然后因為很快要開始算個稅減免的部分,對于溫飽線的在下而言,其實減免的可能就只是奶茶錢吧。
工作的本質是賺錢,我也很想在30歲之前完成財務自由
所以要更加努力的賺錢錢,想變成自由職業者(我媽最看不上的那種),然后盡可能的獨立吧。無論是財務還是心理,還是有點太軟弱了。

雞血雞血,要開始學習啦!

當你覺得辛苦的時候,那就是你在變好的時候!

列表生成式

上一次學到Python的高級特性,迭代不同于其他語言的for循環中的下標循環。雖然python也提供了相應的方式,但是精簡才是python的精髓。

列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。

列表生成式-->將生成式放在for循環前,然后for循環之后還可以加入if判斷(真的是相當的簡單粗暴了,是一個用方括號的朋友,畢竟是可以從一個list到另一個list。
原來需要用循環處理的問題,現在用一句簡單的生成式代碼解決。

看廖大神的例子,還可以雙重循環,可以生成全排列。

 [m + n for m in "ABC" for n in "XYZ"]
["AX", "AY", "AZ", "BX", "BY", "BZ", "CX", "CY", "CZ"]
for循環其實可以同時使用兩個甚至多個變量,比如dict的items()可以同時迭代key和value
列表生成式也可以使用兩個變量來生成list


做個作業

生成器
在Python中,這種一邊循環一邊計算的機制,稱為生成器:generator。
這樣就不必創建完整的list,從而節省大量的空間。

創建生成器的辦法有很多。

把列表生成的[]改成(),就創建了一個generator。


如果要打印g的內容,只能用next()函數,獲得下一次的返回值。

generator保存的是算法,每次調用next(g),就計算出g的下一個元素的值,直到計算到最后一個元素,沒有更多的元素時,拋出StopIteration的錯誤。
但是正常來說,我們還是使用for循環來進行打印,這樣不需要調用next()函數,也不需要關心StopInteration的錯誤。

generator非常強大。如果推算的算法比較復雜,用類似列表生成式的for循環無法實現的時候,還可以用函數來實現。

比如,斐波那契數列(我還挺喜歡這個名字的,蜜汁...)

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print(b)
        a, b = b, a + b
        n = n + 1
    return "done"
#用函數進行打印

此處的賦值語句要注意。

a, b = b, a + b

相當于

t = (b, a + b) # t是一個tuple
a = t[0]
b = t[1]

不必顯式寫出臨時變量t就可以賦值。
此處的fib()函數邏輯非常類似generator,此時將print(b)改成yield b就可以把函數變成生成器。

yield關鍵詞很重要,是變成generator的關鍵。

generator和函數的執行流程不一樣。函數是順序執行,遇到return語句或者最后一行函數語句就返回。而變成generator的函數,在每次調用next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

楊輝三角的作業后面補上,算法真的是硬傷。

迭代器
可以直接作用于for循環的對象統稱為可迭代對象:Iterable。

一類是集合數據類型,如list、tuple、dict、set、str等;
一類是generator,包括生成器和帶yield的generator function。

可以使用isinstance()判斷一個對象是否是Iterable對象。
生成器不但可以作用于for循環,還可以被next()函數不斷調用并返回下一個值,直到最后拋出StopIteration錯誤表示無法繼續返回下一個值了。
可以被next()函數調用并不斷返回下一個值的對象稱為迭代器:Iterator。

生成器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。
把list、dict、str等Iterable變成Iterator可以使用iter()函數。

這一章節,emmm,很多概念性的東西。但是還是很厲害的,Iterator的數據流是有序的,但是可能是無限的。對于list而言,不太可能存儲無限的數據。

函數式編程

又開始新的大章節啦,因為落后了好幾天的進度,所以一定要抓緊學習啦~

高階函數Higher-order function

變量可以指向函數

一般而言,abs()是函數,abs(1)是函數調用。
我們常常使用 b = abs(1) 將函數結果賦給變量,但是如下

b = abs

則是將函數賦給變量,這個是可行的。
且變量指向了函數之后,可以使用變量來調用函數。

函數名也是變量

所以在設定變量賦值的時候,要注意不要覆蓋了函數名

傳入函數

函數可以接收另一個函數做為參數,這種函數稱為高階函數
【十分的抽象了!】

map/reduce

map()和reduce()是倆Python的內建函數。

map()

map()接收兩個參數,一個是函數,一個是Iterable,map()將傳入的函數一次作用到序列的每個元素,并將結果做為Iterator 返回。
**雖然循環也可以完成map()的操作,但是map()可以方便看清運算的需求。
map()僅僅用一行代碼,就完成了復雜的運算。

reduce()

reduce()把一個函數作用在一個序列上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算
計算效果就是

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
fliter

Python內建的filter()函數用于過濾序列。

filter()這個高階函數,關鍵在于正確實現一個“篩選”函數。

下面是廖大神的關于素數的示范


其中輸出結果是無序數列,所以要有一定限制條件。
輸出的Iterator是惰性計算的數列,所以可以簡潔的輸出全體素數,自然數等。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42886.html

相關文章

  • 小李飛刀:做題第六彈!

    摘要:給定的字符串只含有小寫英文字母,并且長度不超過。其他這題了,要重做看了其他的人的題解,使用的是無限逼近中位值的辦法,理論基礎應該是泰勒公式。萬萬沒想到居然用到了泰勒公式手工執行了下算法,反而理解的更快,但是泰勒公式還得再復習下。 寫在前面的話 今天持續做題ing,python有意思~今天的題有點虐心...興許是我太笨了...會努力學習的!動態規劃我來啦~ 開始做題 第一題 459. 重...

    BigNerdCoding 評論0 收藏0
  • 小李飛刀python我來做題啦

    摘要:好久不見最近都在忙年底的年會,還沉迷于學習統計學,教程還停留在基礎語法。做題做題無論如何,數據結構還是很重要的,所以準備每天刷的題目啦。第一題移除元素給定一個數組和一個值,你需要原地移除所有數值等于的元素,返回移除后數組的新長度。 好久不見 最近都在忙年底的年會,還沉迷于學習統計學,python教程還停留在基礎語法。但是仔細規劃了下,還是要好好的瞄準目標前行。所以準備呢,實戰走起來。 ...

    nevermind 評論0 收藏0
  • 小李飛刀python新年第一殺

    摘要:新年快樂年終于來了,突然覺得有點如釋重負。大概年實在是太沉重了吧。年應該是要充滿拼勁的一年希望可以成功轉型自己喜歡的職業。開始認真學習了雞血一波。建議類的屬性名和實例屬性名不要重復,否則類的屬性名會覆蓋。 新年快樂 2019年終于來了,突然覺得有點如釋重負。大概2018年實在是太沉重了吧。2019年應該是要充滿拼勁的一年!!!!希望可以成功轉型自己喜歡的職業。 開始認真學習了 雞血一波...

    glumes 評論0 收藏0
  • 小李飛刀python請與我一起愉快的玩耍吧!

    摘要:屬性,可以函數的名字在代碼運行期間動態增加功能的方式,稱之為裝飾器。本質上,就是一個返回函數的高階函數。比如,定義一個能打印日志的。接受函數作為參數,要放置在函數定義處。一個完整的的代碼如下記錄的是傳入的的值,位置在嵌套內或者帶參數的如下。 又是一段叨叨 如果總是擔心能不能做到的話,那就干脆不要做了。想做的事情還是一往無前的好,什么都不想,就努力沖沖沖吧! 裝飾器 因為函數是一個對象。...

    FuisonDesign 評論0 收藏0
  • 小李飛刀:磨刀霍霍繼續向python

    摘要:例如做累加,函數生成整數序列,函數轉換成。因為不能重復,所以中沒有重復的。創建,需要提供一個作為輸入合集。重復元素在中自動被過濾。添加元素,重復添加無效果刪除元素 寫在前面的一點羅里吧嗦小嘮叨昨晚的python看到了快12點吧,然后進度相對來說還算滿意,只能說一點點推進,慶幸自己的大學還是一個比較認真的小碼農,現在撿起來還算比較得心應手(pia飛自己,算法什么的還沒到好嗎!)好好學習唄...

    txgcwm 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<