娛樂城原題目:學Python,從列表推導到zip()函數,這五種技能應知應會 選自towardsdatascience 作者:Peter Nistru 介入:思 最最先學 Python 時,若是我能把握這些要領,那么代碼望起來會加倍精美。 機械之心已經經先容過許多 Python 教程,從特別很是統統的長教程:一文把握 Python 樞紐代碼 all rights reserved,到一些好玩的小技能:Python 技能 101 ,它們從不同的層面安利著 Python 這門神奇的說話。在本文中,作者先容了 5 種要領,大概在入門階段時,咱們還不太相識它們,但在實戰中這 5 個技能特別很是適用。 如下即百家樂五種適用的小技能: 字符串運算 列表推導式 lambda 以及 map 單行前提語句 zip 字符串運算 字符串實質上也是一種元組,然則字符串有許多「運算」方式。最直觀的是字符串的 + 以及 * 運算,它們分手透露表現重復以及毗鄰。 >>> my_string = “大眾Hi Medium..!”大眾 >>> print(my_string * 2) Hi Medium..!Hi Medium..! >>> print(my_string + “大眾 I love Python公眾* 2) Hi Medium..! I love Python I love Python 此外,若是但願取得反向字符串,也能夠間接使用 [::-1] 進行索引: >>> print(my_string[:: -1]) !..muideM iH>>> my_list = [ 1, 2, 3, 4, 5] >>> print(my_list[:: -1]) [ 5, 4, 3, 2, 1] 若是列表元素都是字符串,那么咱們可以疾速地使用 join 要領將一切元素憑借在一路: >>> word_list = [ “大眾awesome”大眾, 公眾is”大眾, “金沙娛樂城評價大眾this”大眾] >>> print( ‘ ‘.join(word_list[:: -1]) + ‘!’) this isawesome! 如上咱們使用 .join 要領拼接列表元素,個中 『 』 透露表現毗鄰方式為空格。實在在天然說話處置中,這個要領會常大老爺娛樂城ptt用,例如咱們將句子拆分為了字符,那么處置后的合并就必要使用 join 了。 列表推導式 若是你還不會使用列表推導式,那么快學起來吧。正如本文作者所言,「當我第一次學到這類方式時,我的整個世界都變了。」列表推導式真的特別很是強盛,它不僅在速率上比一般的要領快,同時直觀性、可讀性都特別很是強。若是你但願迭代列表做一些運算,那么快使用它吧。 咱們先界說一個簡略的函數,它會算變量的平方并加 5: >>> defstupid_func(x): >>> returnx** 2+ 5 若是咱們但願將該函數運用到列表中的奇數項,那么不采用列表推導式的環境下,咱們一般會寫成如下情勢: >>> my_list = [ 1, 2, 3, 4, 5] >>> new_list = [] >>> forx inmy_list: >>> ifx % 2!= 0: >>> new_list.append(stupid_func(x)) >>> print(new_list) [ 6, 14, 30] 然則目前咱們有了列表推導式,那么下面代碼可以等價點竄為: >>> my_list = [ 1, 2, 3, 4, 5] >>> print([stupid_func(x) forx inmy_list ifx % 2!= 0]) [ 6, 14, 30] 列表推導式的一般語法可以透露表現為 [ expression for item in list ],若是你但願加上一些布爾型前提語句,那么下面的語法可以點竄為 [ expression for item in list if conditional ],它的佈局實在以及上面是等價的。 >>> foritem inlist: >>> ifconditional: >>> expression 下面的列表推導式可以進一步簡化,即不必要界說一個新函數。 >>> print([x ** 2+ 5forx inmy_list ifx % 2!= 0]) [ 6, 14, 30] Lambda 以及 Map Lambda 是一種匿名函數,它望起來可能有一點新鮮,然則一旦你懂得了它,那么他就會變得特別很是直觀與強盛。 一般而言,Lambda 函數都比較小,它也不必要界說函數名。那么為什么必要匿名函數?簡略而言,Lambda 最常履行一些直觀的運算,它并不必要規範的函數界說,並且也不必要新的函數名再次挪用。 仍是拿下面的先平方再加 5 為例,後面咱們是界說了一個規範的函數,def stupid_func(x),目前咱們可以嚐嚐 Lambda 匿名函數: >>> stupid_func = ( lambdax : x ** 2+ 5) >>> print([stupid_func( 1), stupid_func( 3), s免費體驗金 註冊tupid_func( 5)]) [ 6, 14, 30] 那么咱們為什么要用下面的抒發式?很大一部門緣故原由在于,當咱們想履行一些簡略運算時,可以不必要界說真實函數就能實現。例如排序列表元素,一種直觀的要領可以使用 sorted 要領: >>> my_list = [ 2, 1, 0, -1, -2] >>> print(sorted(my_list)) [ -2, -1, 0, 1, 2] 這只能默許從大到小或者從小到大排序,然則借助 Lambda 抒發式,咱們可以完成更自由的排序規範。以下所示咱們但願依據最小的平方數對列表進行排序,其可以使用 Lambda 函數界說鍵,從而奉告 sorted 要領該奈何排序。 >>> print(sorted(my_list, key = lambdax : x ** 2)) [ 0, -1, 1, -2, 2] Map 是一個簡略的函數,它可以將某個函數運用到別的一些序列元素,例如列表。若是咱們有兩個列表,咱們但願將這兩個列表對應的元素相乘,那么使用 lambda 函數以及 map 可以疾速完成這一功效: >>> print(list(map( lambdax, y : x * y, [ 1, 2, 3], [ 4, 5, 6]))) [ 4, 10, 18] 下面的代碼特別很是優雅,若是不消它們兩者,那么一般的抒發必要寫成如許: >>> x, y = [ 1, 2, 3], [ 4, 5, 6] >>> z = [] >>> fori inrange(len(x)): >>> z.append(x[i] * y[i]) >>> print(z) [ 4, 10, 18] 單行前提語句 若是咱們使用前提語句,那么最可能寫成上面這個模樣: >>> x = int(input) >>> ifx >= 10: >>> print( “大眾Horse公眾) >>> elif1< x >> print( “大眾Duck”大眾) >>> else: >>> print( “大眾Baguette”大眾) 但實在咱們也能夠把一切前提都寫在 print 函數內,即下面 7 行代碼可以等價寫成以下一行: print( 公眾Horse”大眾ifx >= 10else”大眾Duck公眾if1< x < 10else"Baguette") 這樣看起來真的非常簡潔,如果你查看以前寫的代碼,真的有很多都可以改成這種表達式。 zip 後面在先容 map 函數時,咱們舉了個例子將某個函數運用到平行的兩個列表,而 zip 函數可以更簡略地做到這一點。 若是咱們有兩個列表,第一個列表包括了名,第二個列表包括了姓。使用 zip 函數,以下咱們可以將它們拼接在一路。 >>> first_names = [ “大眾Peter”大眾, “大眾Christian”大眾, “大眾Klaus公眾] >>> last_names = [ “大眾Jensen公眾, 公眾Smith”大眾, “大眾Nistrup”大眾] >>> print([ ‘ ‘.join(x) forx inzip(first_names, last_names)]) [ ‘Peter Jensen’, ‘Christian Smith’, ‘Klaus Nistrup’] 也便是說,zip 將兩個等長的列表變為了一對一對的,即 ((公眾Peter公眾, “大眾Jensen”大眾), (公眾Christian公眾, “大眾Smith公眾), (“大眾Klaus”大眾, “大眾Nistrup”大眾))。 原文鏈接:https://towardsdatascience.com/python-tricks-101-what-every-new-programmer-should-know-c512a9787022 本文為機械之心編譯,轉載請聯系本”大眾號取得受權。
娛樂城-學Python,從列表推導到zip()函數,這五種技巧應知應會-娛樂城註冊
2023-11-12
Previous Post: 娛樂城-駕考秘籍:教您幾招避免科目二壓線方法,輕松考試很簡單!-娛樂城註冊
Next Post: 娛樂城-坤安寧中醫館——傳承千年中醫文化 堅守匠人匠心精神-娛樂城註冊