1. 盤點(diǎn)一個(gè)Python處理的基礎(chǔ)題目

        共 1637字,需瀏覽 4分鐘

         ·

        2022-06-10 03:57

        大家好,我是皮皮。

        一、前言

        前幾天在Python最強(qiáng)王者交流群【Chloe】問了一道Python處理的問題,如下圖所示。

        原始數(shù)據(jù)如下:

        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]

        期望得到的結(jié)果是:

        [0,?1,?2,?3,?4,?5,?6,?7,?8,?9,?4]

        二、實(shí)現(xiàn)過程

        方法一

        這里【老松鼠】給了一份代碼,如下所示:

        import?itertools
        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]

        final_lst?=?[x[0]?for?x?in?itertools.groupby(origin_lst)]
        #?final_lst?=?[k?for?k,?g?in?itertools.groupby(origin_lst)]
        print(final_lst)

        運(yùn)行之后,得到的結(jié)果可以滿足預(yù)期,如下圖所示:

        方法二

        后來【瑜亮老師】也給了一份代碼,使用列表推導(dǎo)式,如下所示:

        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]

        res?=?[origin_lst[i]?for?i?in?range(len(origin_lst))?if?i?==?0?or?origin_lst[i]?!=?origin_lst[i?-?1]]
        print(res)

        運(yùn)行結(jié)果如下圖所示:

        順利的幫助粉絲解決了問題。

        方法三

        后來在【Siris】給了一個(gè)基礎(chǔ)的方法,如下所示:

        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]

        result?=?[origin_lst[0]]
        for?i?in?range(1,?len(origin_lst)):
        ????if?origin_lst[i]?!=?origin_lst[i-1]:
        ????????result.append(origin_lst[i])
        print(result)

        運(yùn)行結(jié)果如下圖所示:

        方法四

        后來在【Siris】還給了一個(gè)生成器的方法,如下所示:

        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]


        def?del_adjacent(iterable):
        ????prev?=?object()
        ????for?item?in?iterable:
        ????????if?item?!=?prev:
        ????????????prev?=?item
        ????????????yield?item


        result?=?list(del_adjacent(origin_lst))
        print(result)

        運(yùn)行結(jié)果如下所示:

        方法五

        后來【Chloe】自己也給了一個(gè)enumerate方法,代碼如下所示:

        origin_lst?=?[0,?0,?1,?2,?3,?4,?4,?5,?6,?6,?6,?7,?8,?9,?4,?4]

        lst_final?=?[]

        for?index,?val?in?enumerate(origin_lst):
        ????if?val?!=?origin_lst[index?-?1]:
        ????????lst_final.append(val)

        print(lst_final)

        運(yùn)行結(jié)果如下圖所示:

        條條大路通羅馬,方法還是很多的!

        三、總結(jié)

        大家好,我是皮皮。這篇文章主要盤點(diǎn)了一道使用Python處理數(shù)據(jù)的問題,文中針對(duì)該問題給出了具體的解析和代碼實(shí)現(xiàn),一共兩個(gè)方法,幫助粉絲順利解決了問題。

        最后感謝粉絲【Chloe】提問,感謝【月神】、【瑜亮老師】、【老松鼠】給出的思路和代碼解析,感謝【dcpeng】、【馮誠(chéng)】、【艾?!びX羅】等人參與學(xué)習(xí)交流。


        瀏覽 81
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲日本韩国高清在线 | 老逼AV | 天天综合成人网 | 亚洲高清视频在线 | 中文无码影视 |