欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

你應該知道的python列表去重方法

 更新時間:2017年01月17日 08:45:05   作者:mindg.cn  
初學者經(jīng)常會遇到如何移除list中重復元素的問題。 這個問題在其他語言中可能需要for循環(huán)什么的,而在python中不用這樣,非常簡單,下面來通過這篇文章主要介紹了關于python列表去重方法以及拓展,需要的朋友可以參考借鑒,一起來看看吧。

前言

列表去重是寫Python腳本時常遇問題,因為不管源數(shù)據(jù)來自哪里,當我們轉(zhuǎn)換成列表的方式時,有可能預期的結(jié)果不是我們最終的結(jié)果,最常見的就是列表中元素有重復,這時候第一件事我們就要做去重處理。

我們先來個最簡單的方式,用python內(nèi)置的數(shù)據(jù)類型set來實現(xiàn)。

假設我們的列表數(shù)據(jù)是這樣的:

level_names = [
 u'Second Level',
 u'Second Level',
 u'Second Level',
 u'First Level',
 u'First Level'
]

因為集合的元素是不能重復的,所以將列表轉(zhuǎn)換成集合時,會自動去掉重復的元素,這就是基本原理,代碼如下:

>>> the_list = set(level_names)
>>> print(the_list)
set([u'Second Level', u'First Level'])

這種方式缺點是再轉(zhuǎn)換成列表時無法保存之前的列表順序,如果沒這個要求,這種方式是最簡答的, 也許有的小伙伴覺得好簡單呀,這沒什么技術(shù)含量嗎,沒錯,所以一般面試題里讓你列表去重一般會這么寫:

請寫出列表去重的方法(不能用set)

人家寫明不能用set了,所以呢,這招有時候還不能用,那當然也難不倒我們,我們還有其他方法。

我們都知道列表可以遍歷,能遍歷問題也就簡單了,我們再定義空列表,然后遍歷有數(shù)據(jù)的列表,再遍歷時加一個判斷,如果在空列表里沒有,就加進去,如果有了就丟掉,代碼如下:

the_list = []
for level in level_names:
 if level not in the_list:
  the_list.append(level)
print(the_list)

大家覺得這種方式是不是還可以,但這種方式對付一般的小列表是沒問題的,但如果遇到一個超級大列表,也會力不從心,因為在the_list列表變的非常大,在判斷時候會影響效率,因為列表是按索引順序去查找的,當數(shù)據(jù)量很大時會變慢。

也許你要問了,那我遇到大的列表咋辦? 有更牛掰點的方法嗎?當然有,讓我們繼續(xù),既然在判斷時用列表會影響效率,那我們就轉(zhuǎn)換一個思路,我們用集合,那你可能要問了,那集合就快了?沒錯,因為set使用的hash函數(shù)查找值,雖然set無序,但位置是固定的,只需一次就可以查到特定元素是否存在,網(wǎng)上有人做了列表和set的元素查找對比,相同的數(shù)據(jù)條件下,用list耗時16分鐘,用set耗時是52秒,這一對比看出效果了吧,別的不多說了,貼代碼:

the_list = []
the_set = set()
for level in level_names:
 if level not in the_set:
  the_set.add(level)
  the_list.append(level)
print(the_list)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Python繪圖Turtle庫的安裝問題解決

    Python繪圖Turtle庫的安裝問題解決

    這篇文章主要介紹了Python繪圖中解決Turtle的安裝問題示例分析,也遇到過相同問題的同學可以借鑒參考下,希望能夠解決你的問題
    2021-10-10
  • 詳解Python如何精確控制asyncio并發(fā)運行多個任務

    詳解Python如何精確控制asyncio并發(fā)運行多個任務

    這篇文章主要為大家詳細介紹了Python如何精確控制asyncio并發(fā)運行多個任務,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • 詳解Python中命令行參數(shù)argparse的常用命令

    詳解Python中命令行參數(shù)argparse的常用命令

    這篇文章主要為大家詳細介紹了Python中命令行參數(shù)argparse的一些常用命令,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以了解一下
    2023-01-01
  • 九個Python列表生成式高頻面試題匯總

    九個Python列表生成式高頻面試題匯總

    本文為大家整理了九個Python列表生成式的面試題(從簡單到困難排序),可以幫助大家提高列表生成式的理解水平,感興趣的小伙伴可以學習一下
    2022-05-05
  • python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法

    python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法

    這篇文章主要介紹了python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法,主要涉及了pefile模塊的用法,需要的朋友可以參考下
    2014-10-10
  • Python中反射和描述器總結(jié)

    Python中反射和描述器總結(jié)

    這篇文章主要介紹了Python中的反射和描述器一些知識的匯總,非常的詳細,有需要的小伙伴可以參考下
    2018-09-09
  • 50行Python代碼實現(xiàn)人臉檢測功能

    50行Python代碼實現(xiàn)人臉檢測功能

    現(xiàn)在的人臉識別技術(shù)已經(jīng)得到了非常廣泛的應用,支付領域、身份驗證、美顏相機里都有它的應用。下面小編給大家?guī)砹嘶?0行Python代碼實現(xiàn)人臉檢測功能,一起看看吧
    2018-01-01
  • Django1.7+python 2.78+pycharm配置mysql數(shù)據(jù)庫教程

    Django1.7+python 2.78+pycharm配置mysql數(shù)據(jù)庫教程

    原本感覺在Django1.7+python 2.78+pycharm環(huán)境下配置mysql數(shù)據(jù)庫是件很容易的事情,結(jié)果具體操作的時候才發(fā)現(xiàn),問題還是挺多的,這里記錄一下最終的配置結(jié)果,給需要的小伙伴參考下吧
    2014-11-11
  • PyCharm 常用快捷鍵和設置方法

    PyCharm 常用快捷鍵和設置方法

    下面小編就為大家分享一篇PyCharm 常用快捷鍵和設置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Python如何優(yōu)雅的實現(xiàn)自增枚舉類

    Python如何優(yōu)雅的實現(xiàn)自增枚舉類

    枚舉類型在編程中扮演著重要的角色,它們?yōu)樽兞抠x予了更加清晰的含義,然而,在Python中,實現(xiàn)自增的枚舉類并非直接而簡單的任務,本文將深入討論如何通過不同的方式優(yōu)雅地實現(xiàn)自增的枚舉類,需要的朋友可以參考下
    2023-12-12

最新評論