在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 4個Python推導(dǎo)式相關(guān)的開發(fā)技巧

            4個Python推導(dǎo)式相關(guān)的開發(fā)技巧

            發(fā)布人:數(shù)據(jù)派THU 時間:2022-10-20 來源:工程師 發(fā)布文章

            對于數(shù)據(jù)科學(xué),Python通常被廣泛地用于進(jìn)行數(shù)據(jù)的處理和轉(zhuǎn)換,它提供了強大的數(shù)據(jù)結(jié)構(gòu)處理的函數(shù),使數(shù)據(jù)處理更加靈活,這里說的“靈活性”是什么意思?


            這意味著在Python中總是有多種方法來實現(xiàn)相同的結(jié)果,我們總是有不同的方法并且需要從中選擇易于使用、省時并能更好控制的方法。
            要掌握所有的這些方法是不可能的。所以這里列出了在處理任何類型的數(shù)據(jù)時應(yīng)該知道的4個Python技巧。
            圖片
            列表推導(dǎo)式List Comprehension是創(chuàng)建列表的一種優(yōu)雅且最符合python語言的方法。與for循環(huán)和if語句相比,列表推導(dǎo)式在基于現(xiàn)有列表的值創(chuàng)建新列表時語法要短得多。因此,讓我們看看該特性如何獲得列表的副本。

            使用列表推導(dǎo)式復(fù)制一個列表


            有時需要創(chuàng)建現(xiàn)有列表的副本。最簡單的答案是.copy(),它允許您將一個列表的內(nèi)容復(fù)制到另一個(新)列表。
            例如,一個由整數(shù)組成的列表original_list。


             original_list = [10,11,20,22,30,34]

            可以簡單地使用.copy()方法復(fù)制此列表。


             duplicated_list = original_list.copy()


            列表推導(dǎo)式可以得到完全相同的輸出。復(fù)制列表是理解列表推導(dǎo)式的最佳案例。看看下面這段代碼。


             duplicated_list = [item for item in original_list]


            這里并不是說復(fù)制列表使用列表推導(dǎo)式更好,而是說對于介紹列表推導(dǎo)式的工作方式,這個案例是最好的。
            接下來,讓我們看看對列表的每個元素執(zhí)行數(shù)學(xué)運算時,列表推導(dǎo)式如何使工作變得簡單。

            列表中的元素相乘


            最簡單或直接的乘法方法是使用乘法運算符,即*
            例如,想用一個標(biāo)量(即數(shù)字5)乘以列表中的每一項。這里肯定不能使用original_list*5,因為它將創(chuàng)建列表的5個副本。
            在這個場景中,最好的答案是列表推導(dǎo)式,如下所示。

             original_list = [10,11,20,22,30,34] multiplied_list = [item*5 for item in original_list] # Output [50, 55, 100, 110, 150, 170]


            這里的操作并不局限乘以一個數(shù)字。可以對原始列表的每個元素執(zhí)行復(fù)雜的操作。例如,假設(shè)想計算每一項的平方根的立方,可以在一行中解決它。

             multiplied_list = [math.sqrt(item)**3 for item in original_list] # Output [31.6227766016838,  36.4828726939094,  89.4427190999916,  103.18914671611546,  164.31676725154983,  198.25236442474025]


            用于計算數(shù)字平方根的函數(shù)sqrt屬于庫math,因此在本例中需要在使用它之前導(dǎo)入它。與上面所示的內(nèi)置函數(shù)類似,還可以在列表的每個元素上使用用戶定義的函數(shù)。例如如下所示的簡單函數(shù)。


             def simple_function(item):    item1 = item*10    item2 = item*11    return math.sqrt(item1**2 + item2**2)

            可以對列表的每一項應(yīng)用這個用戶定義的函數(shù)。


             multiplied_list = [simple_function(item) for item in original_list]
            # Output [148.66068747318505,  163.52675622050356,  297.3213749463701,  327.0535124410071,  445.9820624195552,  505.4463374088292]

            列表推導(dǎo)式在實際場景中甚至更有用。通常在分析任務(wù)中需要從列表中刪除某種類型的元素,例如消0護(hù)著nan元素。列表推導(dǎo)式是完成這些任務(wù)的完美工具。

            刪除列表中的元素


            根據(jù)特定條件篩選數(shù)據(jù)是選擇所需數(shù)據(jù)集的常見任務(wù)之一,同樣的邏輯也用于列表推導(dǎo)式中。
            假設(shè)你有下面提到的數(shù)字列表。


             original_list = [10, 22, -43, 0, 34, -11, -12, -0.1, 1]


            你想要從這個列表中只保留正值。因此,從邏輯上講,您希望只保留那些對條件項> 0求值為TRUE的項。


             new_list = [item for item in original_list if item > 0]  # Output [10, 22, 34, 1]

            if子句用來刪除負(fù)值。可以使用if子句應(yīng)用任何條件來從列表中刪除任何項。
            例如,當(dāng)想刪除所有平方小于200的項時需要做的就是在列表綜合中提到條件項**2 > 200,如下所示。


             new_list = [item for item in original_list if item**2 > 200]
            # Output [22, -43, 34]

            在處理真實的數(shù)據(jù)集時,過濾列表項的條件可能要復(fù)雜得多,這種方法既快又易于理解。

            使用dict()將兩個列表轉(zhuǎn)換為字典鍵值對


            有時需要從兩個列表中的值創(chuàng)建字典。你可以使用字典推導(dǎo)式(dictionary comprehension) ,而不是一個一個地輸入,這是創(chuàng)建字典的一種優(yōu)雅而簡潔的方法!它的工作原理與列表推導(dǎo)式完全相似,唯一的區(qū)別是——創(chuàng)建一個列表推導(dǎo)式時,你將所有內(nèi)容都包含在方括號中,例如[],而在字典推導(dǎo)式中,你將所有內(nèi)容都包含在花括號中,例如{}。
            假設(shè)有兩個列表—字段和詳細(xì)信息—如下所示。


             fields = [‘name’, ‘country’, ‘a(chǎn)ge’, ‘gender’] details = [‘pablo’, ‘Mexico’, 30, ‘Male’]

            一個簡單的方法是使用像這樣的字典推導(dǎo)式:

             new_dict = {key: value for key, value in zip(fields, details)}  # Output {'name': 'pablo', 'country': 'Mexico', 'age': 30, 'gender': 'Male'}


            這里需要理解的重要是函數(shù)zip是如何工作的。
            在Python中,zip函數(shù)接受可迭代對象,如字符串、列表或字典作為輸入,返回它們聚合為元組。
            因此,在本例中zip已經(jīng)從列表fields和details中形成了每個項的對。當(dāng)字典推導(dǎo)式中使用key: value時,只需將此元組解包為單獨的鍵-值對。
            當(dāng)使用Python中內(nèi)置的dict()構(gòu)造函數(shù)(用于創(chuàng)建字典)時,這個過程甚至?xí)兊酶?,因為dict()比字典推導(dǎo)式至少快1.3倍!
            所以我們需要將此構(gòu)造函數(shù)與zip()函數(shù)一起使用,它的語法要簡單得多——dict(zip(fields,details))。

            總結(jié)


            正如我一開始提到的,Python非常靈活,因為有多種方法可以實現(xiàn)相同的結(jié)果。根據(jù)任務(wù)的復(fù)雜程度需要選擇最好的方法來實現(xiàn)它。
            我希望這篇文章能對你有用。如果有任何其他方法可以做到我在本文中提到的同樣的事情,請告訴我。
            作者:Suraj Gurav


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉