1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        必知必會的8個Python列表技巧

        共 1760字,需瀏覽 4分鐘

         ·

        2020-06-26 23:23


        原作者: Nik Piepenbreier
        編譯&內(nèi)容補(bǔ)充: 費(fèi)弗里
        原文地址: https://towardsdatascience.com/advanced-python-list-techniques-c6195fa699a3

        列表(List)是你使用Python過程中接觸最為頻繁的數(shù)據(jù)結(jié)構(gòu),也是功能最為強(qiáng)大的幾種數(shù)據(jù)結(jié)構(gòu)之一。Python列表非常的萬能且蘊(yùn)含著許多隱藏技巧,下面我們就來探索一些常用的列表技巧。


        1 列表元素的過濾

        1.1 filter()的使用

        filter()函數(shù)接受2個參數(shù):1個函數(shù)對象以及1個可迭代的對象,接下來我們定義1個函數(shù)然后對1個列表進(jìn)行過濾。

        首先我們創(chuàng)建1個列表,并且剔除掉小于等于3的元素:

        86fa28e70e4205d6cdd140a33a4df99a.webp圖1

        回顧一下發(fā)生了什么:

        1. 我們定義了列表original_list

        2. 接著我們定義了一個接受數(shù)值型參數(shù)number的函數(shù)filter_three,當(dāng)傳入的參數(shù)值大于3時會返回True,反之則會返回False

        3. 我們定義了filter對象filtered,其中filter()接受的第一個參數(shù)是函數(shù)對象,第二個參數(shù)是列表對象

        4. 最終我們將filter對象轉(zhuǎn)化為列表,最終得到經(jīng)filter_three過濾后original_list內(nèi)留下的元素。

        1.2 使用列表推導(dǎo)式

        類似的,我們也可以利用列表推導(dǎo)式來過濾列表元素,作為一種生成和修改列表優(yōu)雅的方式,列表推導(dǎo)式想必大家都比較熟悉了,下面是使用列表推導(dǎo)完成同樣任務(wù)的過程:

        d153cd94aa9188ad16d317322912e7a2.webp圖2

        2 修改列表

        2.1 map()的使用

        Python中內(nèi)置的map()函數(shù)使得我們可以將某個函數(shù)應(yīng)用到可迭代對象內(nèi)每一個元素之上。

        比方說我們想獲取到一個列表對象中每一個元素的平方,就可以使用到map()函數(shù),就像下面的例子一樣:

        92212f7ad32583168afcaec1c6fab9d7.webp圖3

        類似filter()的工作過程,下面我們來看看發(fā)生了什么:

        1. 首先我們定義了列表original_list,以及接受數(shù)值型參數(shù)并返回其平方值的函數(shù)square()

        2. 接著我們定義了map對象squares,類似filter()map()接受的第一個參數(shù)是函數(shù)對象,第二個參數(shù)是列表對象

        3. 最終我們將map對象squares列表化,就得到了想要的結(jié)果

        2.2 使用列表推導(dǎo)式

        同樣的我們也可以使用列表推導(dǎo)式完成同樣的任務(wù):

        4c39ce977be33325945bbefeeeca3878.webp圖4

        3 利用zip()來組合列表

        有些情況下我們需要將兩個或以上數(shù)量的列表組合在一起,這類需求使用zip()來完成非常方便。

        zip()函數(shù)接收多個列表作為參數(shù)傳入,進(jìn)而得到每個位置上一一對應(yīng)的元素組合,就像下面的例子一樣:

        3b91273a1a023761609ddf87b733dd99.webp圖5

        4 顛倒列表

        Python中的列表是有序的數(shù)據(jù)結(jié)構(gòu),正因如此,列表中元素的順序很重要,有些時候我們需要翻轉(zhuǎn)列表中所有元素的順序,可以通過Python中的切片操作,用::-1來快捷地實現(xiàn):

        dbd97dbf2f5af2bcb3d1ce6fe0a74371.webp圖6

        5 檢查列表中元素的存在情況

        有些情況下我們想要檢查列表中是否存在某個元素,這種時候就可以使用到Python中的in運(yùn)算符,譬如說我們有一個記錄了所有比賽獲勝隊伍名稱的列表,當(dāng)我們想查詢某個隊名是否已獲勝時,可以像下面的例子一樣:

        8327ccebedaeb81db13c111d2e1777b8.webp圖7

        6 找出列表中出現(xiàn)次數(shù)最多的元素

        有些情況下我們想要找出列表中出現(xiàn)次數(shù)最多的元素,譬如對記錄若干次拋硬幣結(jié)果的列表,找出哪一種結(jié)果出現(xiàn)次數(shù)最多,就可以參考下面的例子:

        c3fc8ed0d37af2013da1c1593304d5b7.webp圖8

        7 展平嵌套列表

        有些情況下我們會遇到一些嵌套的列表,其每個元素又是各自不同的列表,這種時候我們就可以利用列表推導(dǎo)式來把這種嵌套列表展平,如下面2層嵌套的例子:

        8d593acb03218d86cbe64bac11adba8a.webp圖9

        額外補(bǔ)充

        原作者這里只考慮到兩層嵌套的列表,如果是更多層嵌套,就需要有多少層寫多少for循環(huán),比較麻煩,其實還有一種更好的方法,我們可以使用pip install dm-tree來安裝tree這個專門用于展平嵌套結(jié)構(gòu)的庫,可以展平任意層嵌套列表,使用例子如下:

        4ecef2ad4d9f572da03e0376a461039e.webp圖10

        8 檢查唯一性

        如果你想要查看列表中的值是否都是唯一值,可以使用Python中的set數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),譬如下面的例子:

        2368f6c771da6c8a4b7760130f1f7853.webp圖11

        以上就是本文的全部內(nèi)容,如有疑問歡迎在評論區(qū)討論~



        往期精選

        ?

        解決matplotlib文字標(biāo)簽遮擋問題

        輕松解決Github連接緩慢、圖裂問題

        全平臺都能用的pandas運(yùn)算加速神器

        Python大數(shù)據(jù)分析

        data creats?value

        長按二維碼關(guān)注

        瀏覽 25
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            精品人妻一区二区三区免费看 | 久久大香蕉欧美 | av在线一区二区 吃奶操逼视频 | 一本大道AV伊人久久综合蜜芽 | 青青草怡红院 | 好好的日。com视频 | 免费偷拍| 国产精品精品久久久久久甜蜜软件 | 大香蕉操逼逼 | 逼逼爱插插网站 |