成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

Keagan / 3111人閱讀

摘要:迭代器可以直接作用于循環(huán)的對象統(tǒng)稱為可迭代對象??梢员缓瘮?shù)調用并不斷返回下一個值的對象稱為迭代器。這個高階函數(shù),關鍵在于正確實現(xiàn)一個篩選函數(shù)。

又是日常嘮嗑的一小段

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

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

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

列表生成式

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

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

列表生成式-->將生成式放在for循環(huán)前,然后for循環(huán)之后還可以加入if判斷(真的是相當?shù)暮唵未直┝?/strong>,是一個用方括號的朋友,畢竟是可以從一個list到另一個list。
原來需要用循環(huán)處理的問題,現(xiàn)在用一句簡單的生成式代碼解決。

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

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


做個作業(yè)

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

創(chuàng)建生成器的辦法有很多。

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


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

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

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

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

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

此處的賦值語句要注意。

a, b = b, a + b

相當于

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

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

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

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

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

迭代器
可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象:Iterable。

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

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

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

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

函數(shù)式編程

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

高階函數(shù)Higher-order function

變量可以指向函數(shù)

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

b = abs

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

函數(shù)名也是變量

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

傳入函數(shù)

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

map/reduce

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

map()

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

reduce()

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

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

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

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

下面是廖大神的關于素數(shù)的示范


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

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

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

相關文章

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

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

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

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

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

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

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

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

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

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

    txgcwm 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<