python编程基础(一):编程思想
編程核心思想:以前我java老師曾告訴我們編程思想:初級選手應該從內而外、從小到大,先從實現(xiàn)一個簡單的小功能開始,一點一點往里加,最后讓功能變復雜(簡單->復雜:可以先假定最理想、最簡單的數(shù)據(jù),在最理想數(shù)據(jù)的基礎上實現(xiàn)之后,再測試修改麻煩的數(shù)據(jù)模式);而高級選手喜歡從上而下,從難到易,他們傾向于先搭建一個整體的結構框架,再由外而內地一點點地填充起內部簡單語句。
-->?當一個函數(shù)或算法太復雜時,可以分塊完成。比如,統(tǒng)計詞頻可以分為輸入、統(tǒng)計、輸出;SimHash算法可能分為擴展、加減權重、收縮等步驟。
--> 編程的精神是開源和共享,網絡上有很多可以實現(xiàn)某個功能的代碼片段,可以粘貼復制重復利用,而不用自己從頭到尾苦心孤詣地一點點寫。
工程思維:
==>科研和工程的區(qū)別:
- 科研注重的是研究,講求新;而工程注重的是應用,講求用,方法不必最新,能滿足需求應用就行。
- 科研注重的是研究,關注研究的背景和意義;而工程注重的是方法能不能實現(xiàn)工程需求,方法能不能在實際環(huán)境中達到可用性。
目錄
?
1. 雙層循環(huán)思想
2. 迭代思想
3. 遞歸思想
1. 雙層循環(huán)思想
循環(huán)、迭代前提:一定要弄清楚循環(huán)條件和循環(huán)操作對象。
應用場景:重復反饋過程的活動,不過每一次重復都需要重新遍歷原數(shù)組。比如:最長回文字符串
- ?遍歷一個數(shù)組或序列并在這個數(shù)組上進行操作,可以使用雙層循環(huán)控制。比如:
- ?依次遞減需要檢測字符串的長度,直到子字符串為空,長度為0,這是一個典型的while循環(huán)呀
- ?跳出雙層循環(huán)。break只跳出單層循環(huán),雙層循環(huán)需要兩個break和一個if trigger布爾邏輯判斷。
應用方法:循環(huán)條件為長度判斷時->外層while循環(huán),內層for循環(huán);循環(huán)條件為中心或索引判斷時->外層for循環(huán),內層for循環(huán)
應用案例:最大回文字符串;
-->?雙層循環(huán)與迭代區(qū)別:雙層循環(huán)每一次重復都是對原數(shù)組進行操作;迭代是每一次重復的結果會作為下一次迭代的初始值,對更新后的數(shù)組進行操作。
# 最大回文字符串-枚舉法 def verifyreverse(st):current = len(st)trigger = Falsewhile current > 0:for i in range(len(st) - current + 1):tmp = st[i:i + current]# print(tmp)if tmp == tmp[::-1]:target = tmptrigger = Truebreakcurrent -= 1if trigger:breakreturn targetprint verify reverse("efbaabdi")2. 迭代思想
迭代(iteration):重復反饋過程的活動,每一次迭代的結果會作為下一次迭代的初始值。(A重復調用B)
應用場景:重復反饋過程的活動,不過每一次迭代的結果會作為下一次迭代的初始值,對更新后的數(shù)組進行操作。
應用方法:left_index = 0; right = len(string) - 1?
應用案例:二分法查找元素和元素索引
--> 迭代和遞歸區(qū)別:迭代是A重復調用B;遞歸是A重復調用A
3. 遞歸思想
遞歸(recursion):遞歸常被用來描述以自相似方法重復事物的過程,在數(shù)學和計算機科學中,指的是在函數(shù)定義中使用函數(shù)自身的方法。(A調用A)
?
總結
以上是生活随笔為你收集整理的python编程基础(一):编程思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python programming t
- 下一篇: python编程基础(四):编程习惯、代