亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中列表和字符串常用的數據去重方法總結

 更新時間:2023年11月23日 11:32:30   作者:蟲無涯  
關于數據去重,咱們這里簡單理解下,就是刪除掉重復的數據,應用的場景比如某些產品產生的大數據,有很多重復的數據,為了不影響分析結果,我們可能需要對這些數據進行去重,所以本文給大家總結了Python中列表和字符串常用的數據去重方法,需要的朋友可以參考下

1 關于數據去重

  • 關于數據去重,咱們這里簡單理解下,就是刪除掉重復的數據;
  • 應用的場景比如某些產品產生的大數據,有很多重復的數據,為了不影響分析結果,我們可能需要對這些數據進行去重,刪除重復的數據,提高分析效率等等。

2 字符串去重

2.1 for方法

  • 基本思路是for循環(huán)先遍歷字符串;
  • 遍歷的字符要是沒在結果字符串中,就添加到結果字符串即可。
  • 代碼如下:
import unittest

class TestDeduplication(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.char_date = "12344312abcdcbdaABCDDCBA張王李張"
        print(f"原始字符串為:{cls.char_date}")

    @classmethod
    def tearDownClass(cls) -> None:
        pass

    def test_char_for(self):
        char_date01 = ""
        for data in self.char_date:
            if data not in char_date01:
                char_date01 += data
        print(f"for方法去重后數據:{char_date01}")
        
if __name__ == "__main__":
    unittest.main()
  • 結果輸出為:

原始字符串為:12344312abcdcbdaABCDDCBA張王李張
for方法去重后數據:1234abcdABCD張王李

2.2 while方法

  • 思路和for差不多;
  • 這里主要是通過通過索引的方式查找;
  • 代碼如下:
import unittest

class TestDeduplication(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.char_date = "12344312abcdcbdaABCDDCBA張王李張"
        print(f"原始字符串為:{cls.char_date}")

    @classmethod
    def tearDownClass(cls) -> None:
        pass

    def test_char_while(self):
        char_date02 = ""
        flag = len(self.char_date) - 1
        while True:
            if flag >= 0:
                if self.char_date[flag] not in char_date02:
                    char_date02 += self.char_date[flag]
                flag -= 1
            else:
                break
        print(f"while方法去重后數據:{char_date02}")

if __name__ == "__main__":
    unittest.main()
  • 輸出結果為:

原始字符串為:12344312abcdcbdaABCDDCBA張王李張
while方法去重后數據:張李王ABCDadbc2134

2.3 列表方法

  • 我們先把字符串轉為集合去重;
  • 再將集合轉為列表;
  • 將列表轉為字符串,最后排序進行輸出即可;
  • 部分代碼如下,其他關于類的內容和以上一樣:
    def test_char_list(self):
        char_date03 = set(self.char_date)
        char_date04 = list(char_date03)
        char_date04.sort(key=self.char_date.index)
        print(f"列表方法去重后數據:{''.join(char_date04)}")
  • 輸出后為:

原始字符串為:12344312abcdcbdaABCDDCBA張王李張
列表方法去重后數據:1234abcdABCD張王李

2.4 直接刪除法

  • 這個主要是直接對原字符串直接操作;
  • 通過下標以及字符串切片方法實現;
  • 部分代碼如下:
    def test_char_delete(self):
        for data in self.char_date:
            if self.char_date[0] in self.char_date[1:len(self.char_date)]:
                self.char_date = self.char_date[1:len(self.char_date)]
            else:
                self.char_date = self.char_date[1:len(self.char_date)] + self.char_date[0]
        print(f"直接刪除方法去重后數據:{''.join(self.char_date)}")
  • 輸出為:

原始字符串為:12344312abcdcbdaABCDDCBA張王李張
直接刪除方法去重后數據:4312cbdaDCBA王李張

2.5 fromkeys方法

  • 直接使用fromkeys()方法,它的作用是從序列鍵和值設置為value來創(chuàng)建一個新的字典;
  • 部分代碼如下:
    def test_char_fromkeys(self):
        char_date05 = {}
        char_date06 = char_date05.fromkeys(self.char_date)
        list_char = list(char_date06.keys())
        print(f"fromkeys方法去重后數據:{''.join(list_char)}")
  • 輸出為:

原始字符串為:12344312abcdcbdaABCDDCBA張王李張
fromkeys方法去重后數據:1234abcdABCD張王李

3 列表去重

3.1 for方法

  • 循環(huán)遍歷列表后添加到新的列表即可;
  • 這個方法不會改變原來的順序;
  • 代碼如下:
class TestDeduplication(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.list_data = ["A", "B", "C", "D", "E", "C", "A", "B"]
        print(f"原始列表為:{cls.list_data}")

    @classmethod
    def tearDownClass(cls) -> None:
        pass
        
    def test_list_for(self):
        list_data01 = []
        for data in self.list_data:
            if data not in list_data01:
                list_data01.append(data)
        print(f"for方法:{list_data01} ")

if __name__ == "__main__":
    unittest.main()
  • 輸出為:

原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']
for方法:['A', 'B', 'C', 'D', 'E'] 

3.2 set方法1

  • 直接使用set方法后轉為列表即可;
  • 這個方法會改變原來的順序;
  • 部分代碼如下:
 def test_list_set(self):
        list_data02 = list(set(self.list_data))
        print(f"set方法1:{list_data02}")
  • 輸出為:

原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']
set方法1:['D', 'C', 'B', 'E', 'A']

3.3 set方法2

  • 直接使用set方法后轉為列表;
  • 這個方法會改變原來的順序,可進行排序;
  • 部分代碼:
 def test_list_set01(self):
        list_data03 = list(set(self.list_data))
        list_data03.sort(key=self.list_data.index)
        print(f"set方法2:{list_data03}")
  • 輸出為:

原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']
set方法2:['A', 'B', 'C', 'D', 'E']

3.4 count方法

  • 先對原序列進行排序;
  • 循環(huán)遍歷列表后使用count()方法;
  • 部分代碼:
    def test_list_count(self):
        self.list_data.sort()
        for data in self.list_data:
            while self.list_data.count(data) > 1:
                del self.list_data[self.list_data.index(data)]
        print(f"count方法:{self.list_data}")
  • 輸出為:

原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']
count方法:['A', 'B', 'C', 'D', 'E']

3.5 轉字典法

  • 直接把列表轉為字典方法即可;
  • 部分代碼:
 def test_list_dict(self):
        list_data04 = {}
        list_data05 = list_data04.fromkeys(self.list_data).keys()
        list_data06 = list(list_data05)
        print(f"字典法:{list_data06}")
  • 輸出為:

原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']
字典法:['A', 'B', 'C', 'D', 'E']

4 完整代碼

  • 以下為列表和字符串常用的數據去重方法的完整代碼;
  • 使用unittest中的TestCase類組織測試用例;
  • 代碼如下:
# -*- coding:utf-8 -*-
# 作者:蟲無涯
# 日期:2023/11/22 
# 文件名稱:test_deduplication.py
# 作用:字符串和列表去重
# 聯(lián)系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson


import unittest


class TestDeduplication(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.char_date = "12344312abcdcbdaABCDDCBA張王李張"
        cls.list_data = ["A", "B", "C", "D", "E", "C", "A", "B"]
        print(f"原始字符串為:{cls.char_date}")
        print(f"原始列表為:{cls.list_data}")

    @classmethod
    def tearDownClass(cls) -> None:
        pass

    def test_char_for(self):
        char_date01 = ""
        for data in self.char_date:
            if data not in char_date01:
                char_date01 += data
        print(f"for方法去重后數據:{char_date01}")

    def test_char_while(self):
        char_date02 = ""
        flag = len(self.char_date) - 1
        while True:
            if flag >= 0:
                if self.char_date[flag] not in char_date02:
                    char_date02 += self.char_date[flag]
                flag -= 1
            else:
                break
        print(f"while方法去重后數據:{char_date02}")

    def test_char_list(self):
        char_date03 = set(self.char_date)
        char_date04 = list(char_date03)
        char_date04.sort(key=self.char_date.index)
        print(f"列表方法去重后數據:{''.join(char_date04)}")

    def test_char_delete(self):
        for data in self.char_date:
            if self.char_date[0] in self.char_date[1:len(self.char_date)]:
                self.char_date = self.char_date[1:len(self.char_date)]
            else:
                self.char_date = self.char_date[1:len(self.char_date)] + self.char_date[0]
        print(f"直接刪除方法去重后數據:{''.join(self.char_date)}")

    def test_char_fromkeys(self):
        char_date05 = {}
        char_date06 = char_date05.fromkeys(self.char_date)
        list_char = list(char_date06.keys())
        print(f"fromkeys方法去重后數據:{''.join(list_char)}")

    print("===============================================")

    def test_list_for(self):
        list_data01 = []
        for data in self.list_data:
            if data not in list_data01:
                list_data01.append(data)
        print(f"for方法:{list_data01} ")

    def test_list_set(self):
        list_data02 = list(set(self.list_data))
        print(f"set方法1:{list_data02}")

    def test_list_set01(self):
        list_data03 = list(set(self.list_data))
        list_data03.sort(key=self.list_data.index)
        print(f"set方法2:{list_data03}")

    def test_list_count(self):
        self.list_data.sort()
        for data in self.list_data:
            while self.list_data.count(data) > 1:
                del self.list_data[self.list_data.index(data)]
        print(f"count方法:{self.list_data}")

    def test_list_dict(self):
        list_data04 = {}
        list_data05 = list_data04.fromkeys(self.list_data).keys()
        list_data06 = list(list_data05)
        print(f"字典法:{list_data06}")
        
        
if __name__ == "__main__":
    unittest.main()
  • 全部輸出為:

===============================================
原始字符串為:12344312abcdcbdaABCDDCBA張王李張
原始列表為:['A', 'B', 'C', 'D', 'E', 'C', 'A', 'B']

直接刪除方法去重后數據:4312cbdaDCBA王李張
for方法去重后數據:1234abcdABCD張王李
fromkeys方法去重后數據:1234abcdABCD張王李
列表方法去重后數據:1234abcdABCD張王李
while方法去重后數據:張李王ABCDadbc2134
count方法:['A', 'B', 'C', 'D', 'E']
字典法:['A', 'B', 'C', 'D', 'E']
for方法:['A', 'B', 'C', 'D', 'E'] 
set方法1:['B', 'A', 'D', 'C', 'E']
set方法2:['A', 'B', 'C', 'D', 'E']

放一張圖吧(雖然用處不大,哈哈):

以上就是Python中列表和字符串常用的數據去重方法總結的詳細內容,更多關于Python列表和字符串數據去重的資料請關注腳本之家其它相關文章!

相關文章

  • Python實現封裝打包自己寫的代碼,被python import

    Python實現封裝打包自己寫的代碼,被python import

    這篇文章主要介紹了Python實現封裝打包自己寫的代碼,被python import,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python?excel合并居中值相同的單元格實例代碼

    Python?excel合并居中值相同的單元格實例代碼

    在工作中遇到了合并具有相同條件的單元格合并的問題,下面這篇文章主要給大家介紹了關于Python?excel合并居中值相同單元格的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 舉例講解Python中字典的合并值相加與異或對比

    舉例講解Python中字典的合并值相加與異或對比

    這里我們來舉例講解Python中字典的合并值相加與異或對比,以不同的字典為對象來進行操作,,需要的朋友可以參考下
    2016-06-06
  • Python?hashlib模塊詳情

    Python?hashlib模塊詳情

    本文,我們來對Python?提供的安全哈希算法的通用接口-hashlib模塊進行學習,文章內容具有一定的參考價值,需要的小伙伴可以參考一下
    2021-11-11
  • PyCharm設置中文(漢化與解除漢化)的方法

    PyCharm設置中文(漢化與解除漢化)的方法

    這篇文章介紹了PyCharm設置中文(漢化與解除漢化)的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • FFrpc python客戶端lib使用解析

    FFrpc python客戶端lib使用解析

    這篇文章主要介紹了FFrpc python客戶端lib使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python爬蟲beautifulsoup解析html方法

    python爬蟲beautifulsoup解析html方法

    這篇文章主要介紹了python爬蟲beautifulsoup解析html方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python實現在線音樂播放器

    Python實現在線音樂播放器

    這篇文章主要為大家詳細介紹了Python實現在線音樂播放器的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Python下使用Scrapy爬取網頁內容的實例

    Python下使用Scrapy爬取網頁內容的實例

    今天小編就為大家分享一篇Python下使用Scrapy爬取網頁內容的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實現的隨機森林算法與簡單總結

    Python實現的隨機森林算法與簡單總結

    這篇文章主要介紹了Python實現的隨機森林算法,結合實例形式詳細分析了隨機森林算法的概念、原理、實現技巧與相關注意事項,需要的朋友可以參考下
    2018-01-01

最新評論