1. Python刷題之路,怎樣做才能讓技術(shù)突飛猛進

        共 4221字,需瀏覽 9分鐘

         ·

        2021-04-03 20:15

        1


        比你優(yōu)秀的人比你還努力


        這個世界最可悲的就是 , 比你優(yōu)秀的人比你還努力

        偶然的機會,通過Python認識了一位華為的文職工作人員。起初只是問我,Python初學者看什么書能快速入門。而兩個月過后,她已經(jīng)開始每天在Leecode上刷題了。雖然有時半夜微信收到她刷題刷到崩潰的消息,或者針對部分Python語法的疑問,但作為一位文職大廠的優(yōu)秀員工,她卻比很多本該靠著代碼吃飯的人更為努力。

        今天這篇文章,就寫給那些希望學習Python,但在刷題路上迷?;蛘哒也坏椒较虻呐笥褌?。文章僅代表個人觀點,不喜勿噴。

        1


        Leecode刷題


        起初學習python,我就是秉承著什么好玩學什么的想法,東一榔頭西一棒子的跳著模塊學習??粗芏喾矫娑加兴婕?,但遇到正兒八經(jīng)的開發(fā)代碼時,就歇菜了?;A(chǔ)的字符串、列表、字典操作,都經(jīng)常出錯。后來才意識到,為了學習模塊而去學習,那只是高屋建瓴,底子差是硬傷。

        一開始看到菜鳥教程上有Python100練,就在網(wǎng)上找了個打包好的全套練習題,PDF下載地址在我之前發(fā)的文章中:

        Python面試的一些心得,與練習題分享

        這套題型挺全面的,但是基礎(chǔ)和算法的內(nèi)容比較少,所以開始去Leecode刷題。今天就借著前幾天這位朋友問的一道題,談?wù)勅绾卧谒㈩}中終結(jié)知識,提高刷題效率吧。

        1


        刷題案例


        在引用朋友的代碼前,提前和她打了個招呼:

        wechart

        我真的是很認真去寫文章的,第一句話只是寒暄而已,大家忽略就好,哈哈….

        先來看看這道題,原題地址(https://leetcode-cn.com/problems/reverse-vowels-of-a-string/):

        編寫一個函數(shù),以字符串作為輸入,反轉(zhuǎn)該字符串中的元音字母。
        示例 1:
        輸入: "hello"
        輸出: "holle"
        示例 2:
        輸入: "leetcode"
        輸出: "leotcede"

        有時候示例害死人,剛看這兩個示例,你可能以為提供的字符串都是只有兩個元音字母,然后我們找到它們,互換位置即可。其實仔細想想就該明白,字符串肯定是隨機的。然后,我們通過朋友的解題代碼,來一步步分析如何通過刷題,積累技術(shù)點,朋友代碼如下:

        朋友的代碼

        1


        案例分析


        讓我們對這份代碼進行仔細剖析

        首先,很多朋友會發(fā)現(xiàn)在reverseVowels函數(shù)中,入?yún)⒌亩x與我們?nèi)粘J褂玫牟煌?strong style="font-size: inherit;color: inherit;line-height: inherit;">(s:str) -> str
        在Python中3.5,PEP 484 - Type Hints附加了一個含義:->用于指示函數(shù)返回的類型。類型提示與括號內(nèi)的類型定義語法,都只是建議但不強制,所以很多教材與代碼中,并未添加。大家知道即可….

        首先,有一個明顯的問題,在while的第一個if中存在一個continue,仔細看代碼,這里的continue完全用不到…

        我們看到代碼定義了i、j兩個列表的index值,用于從兩邊到中間依次遍歷,最終進行替換。但還定義一個result的列表,用于在遍歷過程中一次賦值??蛇@里,暴露出了一個python變量數(shù)值互換的小技巧。a,b =b,a

        而代碼中的else:if … 完全可以替換為elif…

        下來看看代碼報錯的這一行,乍一看感覺這行代碼應(yīng)該沒問題啊。創(chuàng)建了一個空列表,然后把string的第0個字符傳輸給這個空列表。為什么會報錯呢?看看下面的代碼就知道了:

         1a = [1,2,3]
        2b=[]
        3b[0] = a[0]
        4output:
        5Traceback (most recent call last):
        6  File "<input>", line 1in <module>
        7IndexError: list assignment index out of range
        8
        9a = [1,2,3]
        10b=[2]
        11b[0] = a[0]
        12b
        13output:
        14[1]


        1


        最終代碼


        整理過剛才的幾個問題點,讓我們最后修改后執(zhí)行看看:

         1class Solution:
        2    def reverseVowels(self, s: str) -> str:
        3        vowels = list('aeiouAEIOU')
        4        list_s = list(s)
        5        i = 0
        6        j = len(s) - 1
        7        while i < j:
        8            if list_s[i] not in vowels:
        9                i += 1
        10            elif list_s[j] not in vowels:
        11                j -= 1
        12            else:
        13                list_s[i], list_s[j] = list_s[j], list_s[i]
        14                i += 1
        15                j -= 1
        16        return ''.join(list_s)

        如果大家在平時做題的時候,能針對每一步都仔細思考下,是否有優(yōu)化空間,涉及到了那些知識點,那么才算是真正合格的刷題思路。刷題不是追求數(shù)量,而是看中是否在刷題過程中有所收獲。

        推薦閱讀:

        入門: 最全的零基礎(chǔ)學Python的問題  | 零基礎(chǔ)學了8個月的Python  | 實戰(zhàn)項目 |學Python就是這條捷徑


        干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |


        趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


        AI: 會做詩的機器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影


        年度爆款文案



        點閱讀原文,領(lǐng)廖雪峰大數(shù)據(jù)視頻資料!

        瀏覽 22
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 国产成人无码精品电影 | 91视频操逼 | 深田咏美av在线 国产2022gaygv小鲜肉 | 日本三级电影在线播放 | 欧美日韩第一页 |