最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 集合之set詳解

 更新時間:2021年09月18日 15:29:41   作者:憶想不到的暉  
這篇文章主要介紹了python基礎之set集合詳解,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好地幫助,需要的朋友可以參考下

引言

set(集合)雖然用的很少,但它是一個無序的不重復元素序列,用來簡單的去重挺快的。

集合的定義

set(集合) 與列表類似,不同之處在于集合的 元素不重復
集合和字典一樣也是用 {} 定義,但元素之間使用 , 分隔,或者使用 set()

{ } 定義

#!/usr/bin/python3
# -*- coding:utf-8 -*-
name_set = {'hui', 'wang', 'zack', 'hui'}
print(name_set)    	# 結(jié)果為 {'hui', 'wang', 'zack'}
name_set = set('hui', 'wang', 'zack', 'hui')

set() 定義

set() 只接受一個參數(shù)

In [13]: name_set = set('hui')
In [14]: name_set
Out[14]: {'h', 'i', 'u'}
In [15]: name_set = set(['hui', 'wang', 'zack', 'hui'])
In [16]: name_set
Out[16]: {'hui', 'wang', 'zack'}

注意:空集合不能用 s = {} 來定義這樣默認是字典,應該 s = set()

In [27]: s = {}
In [28]: s1 = set()
In [29]: type(s)
Out[29]: dict
In [30]: type(s1)
Out[30]: set

集合常用操作

集合所有內(nèi)置方法如下:

集合內(nèi)置方法

方法太多我選幾個常用的測試一下。

集合添加元素

使用 add() 即可向集合中添加元素

In [33]: s = set()
In [34]: s.add(1)
In [35]: s.add(4)
In [36]: s.add(3)
In [37]: s
Out[37]: {1, 3, 4}
In [38]: s.add(2)
In [39]: s
Out[39]: {1, 2, 3, 4}

集合移除元素

  • remove() 移除集合中的元素,且如果元素不存在,會報錯
  • discard() 移除集合中的元素,且如果元素不存在,不會發(fā)生錯誤
  • pop() 隨機移除集合內(nèi)的一個元素
In [38]: # remove() 移除
In [39]: s
Out[39]: {1, 2, 3, 4}
In [40]: s.remove(3)
In [41]: s
Out[41]: {1, 2, 4}
In [42]: s.remove(5)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-42-9ec04578636f> in <module>
----> 1 s.remove(5)
KeyError: 5
In [45]: # discard() 移除
In [46]: s
Out[46]: {1, 2, 4}
In [47]: s.discard(4)
In [48]: s
Out[48]: {1, 2}
In [49]: s.discard(3)
In [50]: s
Out[50]: {1, 2}
In [56]: # pop() 隨機移除
In [57]: s.pop()
Out[57]: 1
In [58]: s
Out[58]: {2, 3, 9, 'hui'}
In [59]: s.pop()
Out[59]: 2
In [60]: s
Out[60]: {3, 9, 'hui'}

其實set 集合的 pop方法會將集合的左邊第一個元素進行刪除,并返回刪除的元素。

集合統(tǒng)計、清空元素

  • len() 統(tǒng)計集合元素個數(shù)
  • clear() 清空集合
In [68]: name_set
Out[68]: {'wang', 'zack'}
In [69]: len(name_set)
Out[69]: 2
In [71]: name_set.clear()
In [72]: len(name_set)
Out[72]: 0
In [73]: name_set
Out[73]: set()

集合元素獲取(遍歷)

集合不支持索引,也沒有方法進行獲取,因此只能采用 for ... in ... 遍歷方式獲取元素。

In [81]: name_set
Out[81]: {'hui', 'wang', 'zack'}
In [82]: for name in name_set:
    ...:     print(name)
    ...:
hui
wang
zack
In [83]: name_set[0]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-c0ead6d21f1d> in <module>
----> 1 name_set[0]
TypeError: 'set' object is not subscriptable

集合之間的運算

集合差運算 -

In [89]: a = {1, 2, 3, 4, 5}
In [90]: b = {1, 2, 3, 6}
In [91]: a - b
Out[91]: {4, 5}
In [92]: b - a
Out[92]: {6}
In [93]: a.difference(b)
Out[93]: {4, 5}
In [94]: b.difference(a)
Out[94]: {6} 

a - b 就相當于在 a 中去除跟 b 相同的元素b - a 也就是在 b 中去除跟 a 相同的元素a - b 等同于 a.difference(b)

集合并運算 |

In [95]: a
Out[95]: {1, 2, 3, 4, 5}
In [96]: b
Out[96]: {1, 2, 3, 6}
In [97]: a | b
Out[97]: {1, 2, 3, 4, 5, 6}

集合交運算 &

In [99]: a
Out[99]: {1, 2, 3, 4, 5}
In [100]: b
Out[100]: {1, 2, 3, 6}
In [101]: a & b
Out[101]: {1, 2, 3}

集合異或運算 ^

In [102]: a
Out[102]: {1, 2, 3, 4, 5}
In [103]: b
Out[103]: {1, 2, 3, 6}
In [104]: a ^ b
Out[104]: {4, 5, 6}

把 a, b 集合中的相同元素都去掉,剩下的就是 ^ 異或運算的結(jié)果。

應用場景

普通for循環(huán)去重

In [1]: li = [2, 1, 3, 6, 2, 1]
In [2]: temp = []
In [3]: for i in li:
   ...:     if i not in temp:
   ...:         temp.append(i)
   ...:
In [4]: li
Out[4]: [2, 1, 3, 6, 2, 1]
In [5]: temp
Out[5]: [2, 1, 3, 6]

利用集合簡單去重

In [106]: li = [1, 2, 2, 3, 3, 5]
In [107]: li = set(li)
In [108]: li
Out[108]: {1, 2, 3, 5}
In [109]: type(li)
Out[109]: set
In [110]:

這樣把原來的列表類型變成了集合類型,這樣更不好操作,這樣不是想要的結(jié)果。

因此要做到 去重加類型不變,只要再嵌套一個list() 即可

In [110]: li = [1, 2, 2, 3, 3, 5]
In [111]: li = list(set(li))
In [112]: li
Out[112]: [1, 2, 3, 5]
In [113]: type(li)
Out[113]: list
In [114]:

去重保持原來的順序

使用 sort + set 去重

In [6]: list1 = [2, 1, 3, 6, 2, 1]
In [7]: list2 = list(set(list1))
In [8]: list2
Out[8]: [1, 2, 3, 6]
In [9]: list2.sort(key=list1.index)
In [10]: list2
Out[10]: [2, 1, 3, 6]

使用 sorted + set 去重

In [12]: list1 = [2, 1, 3, 6, 2, 1]
In [13]: temp = sorted(set(list1), key=list1.index)
In [14]: temp
Out[14]: [2, 1, 3, 6]

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • 用python實現(xiàn)PDF解密打印文件

    用python實現(xiàn)PDF解密打印文件

    大家好,本篇文章主要講的是用python實現(xiàn)PDF解密打印文件,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • python必備庫Matplotlib畫圖神器

    python必備庫Matplotlib畫圖神器

    這篇文章主要介紹了python必備庫Matplotlib畫圖神器,Matplotlib 是 Python 中最受歡迎的數(shù)據(jù)可視化軟件包之一,支持跨平臺運行,它是 Python 常用的 2D 繪圖庫,同時它也提供了一部分 3D 繪圖接口,更多詳細內(nèi)容,需要的小伙伴可以參考一下下面文章具體內(nèi)容
    2022-03-03
  • Python干貨實戰(zhàn)之八音符醬小游戲全過程詳解

    Python干貨實戰(zhàn)之八音符醬小游戲全過程詳解

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實現(xiàn)一個八音符醬小游戲,大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題

    python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題

    這篇文章主要介紹了python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python中查找素因數(shù)的方法詳解

    Python中查找素因數(shù)的方法詳解

    這篇文章主要為大家詳細介紹了如何在 Python 中執(zhí)行素因數(shù)分解,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以一起學習一下
    2023-10-10
  • Python入門教程(二十六)Python的模塊

    Python入門教程(二十六)Python的模塊

    這篇文章主要介紹了Python入門教程(二十六)Python的模塊,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Python+wxPython實現(xiàn)一個簡單的音樂播放器

    Python+wxPython實現(xiàn)一個簡單的音樂播放器

    這篇文章主要為大家詳細介紹了如何使用Python編程語言和wxPython模塊創(chuàng)建一個簡單的音樂播放器,文中的示例代碼講解詳細,感興趣的可以了解下
    2023-09-09
  • Python3操作SQL Server數(shù)據(jù)庫(實例講解)

    Python3操作SQL Server數(shù)據(jù)庫(實例講解)

    下面小編就為大家?guī)硪黄狿ython3操作SQL Server數(shù)據(jù)庫(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • python中parser.add_argument()用法實例(命令行選項、參數(shù)和子命令解析器)

    python中parser.add_argument()用法實例(命令行選項、參數(shù)和子命令解析器)

    最近開始讀論文代碼了,遇到一個名字叫option的py文件,打開一看清一色的parser.add_argument(),看得是一臉懵逼,這篇文章主要給大家介紹了關于python中parser.add_argument()用法的相關資料,需要的朋友可以參考下
    2022-03-03
  • Python經(jīng)緯度坐標轉(zhuǎn)換為距離及角度的實現(xiàn)

    Python經(jīng)緯度坐標轉(zhuǎn)換為距離及角度的實現(xiàn)

    這篇文章主要介紹了Python經(jīng)緯度坐標轉(zhuǎn)換為距離及角度的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論

清水县| 图木舒克市| 博白县| 瑞金市| 大安市| 稷山县| 平陆县| 峨边| 子长县| 高平市| 康乐县| 师宗县| 乐亭县| 瑞丽市| 宝兴县| 淮南市| 洮南市| 桐梓县| 延津县| 静海县| 云南省| 紫阳县| 德保县| 通榆县| 达孜县| 防城港市| 抚州市| 都兰县| 盱眙县| 鄂州市| 连云港市| 伊吾县| 视频| 石城县| 麻城市| 孟连| 东山县| 民权县| 龙门县| 宁夏| 卢湾区|