成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python基礎(chǔ)之(四)之集合

CKJOKER / 1079人閱讀

摘要:并且集合中的元素也是隨機排序的。除了用來創(chuàng)建集合,還可以使用的方式,但是這種方式不提倡使用,因為在某些情況下,搞不清楚是字典還是集合。集合不是序列類型,不能用索引方式對其進行修改和實現(xiàn)集合和列表兩種對象之間的轉(zhuǎn)化。

集合Set類似字典的特點,可以用{}花括號來定義;其中的元素是沒有序列,也就是非序列類型的數(shù)據(jù);而且集合中的元素不可重復(fù),這就類似于dict鍵。

創(chuàng)建集合
>>> s1 = set("qiswri") #有兩個i
>>> s1
set(["q", "i", "s", "r", "w"]) #只有一個i
>>> 
>>> s2 = set([123,"google","facebook","book","facebook"]);
>>> s2
set(["facebook", 123, "google", "book"]) #只有一個facebook

說明集合中的元素是不能重復(fù)的,在創(chuàng)建集合的時候,如果發(fā)現(xiàn)了重復(fù)的元素,就會自定過濾重復(fù)的元素。并且集合中的元素也是隨機排序的。

除了用set()來創(chuàng)建集合,還可以使用{}的方式,但是這種方式不提倡使用,因為在某些情況下,Python搞不清楚是字典還是集合。

unhashtable(不可哈希的)表示可變數(shù)據(jù),如列表和字典都能原地修改,就是unhastable的;
hastable(可哈希)表示不可變數(shù)據(jù),如字符串不能修改。

>>> s1
set(["q", "i", "s", "r", "w"])
>>> s1[1] = "w"   #集合不是序列類型,不能用索引方式對其進行修改

Traceback (most recent call last):
  File "", line 1, in 
    s1[1] = "w"
TypeError: "set" object does not support item assignment

list()和set()實現(xiàn)集合和列表兩種對象之間的轉(zhuǎn)化。

>>> s2
set(["facebook", 123, "google", "book"])
>>> type(s2)

>>> lst = list(s2)
>>> lst
["facebook", 123, "google", "book"]
>>> type(lst)

>>> s3 = set(lst)
>>> s3
set(["google", 123, "facebook", "book"])
集合的函數(shù)

dir(set):列出集合的函數(shù)

add和update

help(set.add)

>>> s1 = set(["a","b","c"])
>>> s1
set(["a", "c", "b"])
>>> s1.add("abc") #向集合中添加元素
>>> s1
set(["a", "c", "b", "abc"])

>>> s1.add([1,2,3]) #不能添加列表,因為列表的數(shù)據(jù)是可變的

Traceback (most recent call last):
  File "", line 1, in 
    s1.add([1,2,3])
TypeError: unhashable type: "list"
>>> 
>>> s1
set(["a", "c", "b", "abc"])
>>> s2 = set(["e","f","g"])
>>> s1.update(s2) #集合s2添加到s1中
>>> s1
set(["a", "c", "b", "e", "abc", "g", "f"])
>>> s2
set(["e", "g", "f"])
pop、remove、discard、clear
>>> s1
set(["a", "c", "b", "e", "abc", "g", "f"])
>>> s1.pop() #隨機刪除一個元素,并返回這個元素
"a"
>>> s1.pop()
"c"
>>> s1.pop("b")  #不能指定參數(shù)

Traceback (most recent call last):
  File "", line 1, in 
    s1.pop("b")
TypeError: pop() takes no arguments (1 given)
>>> 
>>> s1.remove("b") #刪除集合中指定的元素
>>> s1
set(["e", "abc", "g", "f"])
>>> s1.remove()  #remove必須指定參數(shù)

Traceback (most recent call last):
  File "", line 1, in 
    s1.remove()
TypeError: remove() takes exactly one argument (0 given)
>>> s1.discard("g") #存在則刪除集合中的元素
>>> s1
set(["e", "abc", "f"])
>>> s1.discard("i") #不存在則不做處理,不拋出異常
>>>
>>> s1.clear()  #清空集合
>>> s1
set([])
不變的集合
>>> f1 = frozenset("qwert")
>>> f1
frozenset(["q", "r", "e", "t", "w"])
>>> f1.add("q") #不能修改集合

Traceback (most recent call last):
  File "", line 1, in 
    f1.add("q")
AttributeError: "frozenset" object has no attribute "add"
>>> f1.remove("r")

Traceback (most recent call last):
  File "", line 1, in 
    f1.remove("r")
AttributeError: "frozenset" object has no attribute "remove"
>>> f1.pop()

Traceback (most recent call last):
  File "", line 1, in 
    f1.pop()
AttributeError: "frozenset" object has no attribute "pop"
集合元素 元素與集合的關(guān)系
>>> aset=set(["q","w","e","r","t"])
>>> aset
set(["q", "r", "e", "t", "w"])
>>> "q" in aset
True
>>> "a" in aset
False
集合與集合的關(guān)系 A是否等于B
>>> a
set(["q", "r", "e", "t", "w"])
>>> b = set(["a","b","c"])
>>> a == b
False
>>> a != b
True
A是否是B的子集
>>> c = set(["q","r"])
>>> a
set(["q", "r", "e", "t", "w"])
>>> 
>>> c.issubset(a) #判斷c是否是a的子集
True
>>> a.issuperset(c) #判斷a是否是c的超集
True
AB的并集
>>> a
set(["q", "r", "e", "t", "w"])
>>> b
set(["a", "c", "b"])
>>> a | b
set(["a", "c", "b", "e", "q", "r", "t", "w"]) #ab的并集
>>> a.union(b)
set(["a", "c", "b", "e", "q", "r", "t", "w"]) #ab的并集
AB的交集
>>> a
set(["q", "r", "e", "t", "w"])
>>> b
set(["a", "q", "c", "b"])
>>> a & b   #ab的交集
set(["q"])
>>> a.intersection(b)
set(["q"])
A相對B的差集

A相對B不同的部分元素集合

>>> a
set(["q", "r", "e", "t", "w"])
>>> b
set(["a", "q", "c", "b"])
>>> a - b
set(["r", "e", "t", "w"])
>>> a.difference(b)
set(["r", "e", "t", "w"])
AB的差集

AB中不同元素的集合

>>> a
set(["q", "r", "e", "t", "w"])
>>> b
set(["a", "q", "c", "b"])
>>> a.symmetric_difference(b)
set(["a", "c", "b", "e", "r", "t", "w"])

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38208.html

相關(guān)文章

  • Python基礎(chǔ)接口——從協(xié)議到抽象基類

    摘要:本文重點協(xié)議是中非正式的接口了解抽象基類的基本概念以及標準庫中的抽象基類掌握抽象基類的使用方法。三抽象基類的使用通過繼承聲明抽象基類聲明抽象基類最簡單的方式是繼承或其他抽象基類注意在之間,繼承抽象基類的語法是。 導語:本文章記錄了本人在學習Python基礎(chǔ)之面向?qū)ο笃闹攸c知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、協(xié)議是Python中非正式的接...

    TwIStOy 評論0 收藏0
  • Python爬蟲學習路線

    摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • Python基礎(chǔ)知識集合

    摘要:和一樣可以將元素從集合中刪除,區(qū)別是如果元素不存在則不會報錯。從集合中隨機刪除一個元素,并且返回該元素,如果集合為空則會報錯用于清空集合。 集合的描述 集合是無序的、不重復(fù)的數(shù)據(jù)集合,它本身是可變的,但里面的元素是不可變類型(這里要注意,即使是含有列表的元組也不可以,必須是完全不可變類型) 創(chuàng)建集合 創(chuàng)建集合可以使用大括號{}來創(chuàng)建,元素間用逗號分隔,但是不能用它來創(chuàng)建空集合,因為{}...

    libxd 評論0 收藏0
  • 基礎(chǔ)如何學爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • 1024程序員節(jié)最新福利2018最全大數(shù)據(jù)資料集合

    摘要:前言有好久沒有寫博客了主要這段時間都沉迷學習無法自拔了哈哈自吹一波前兩天不是節(jié)嗎所以就有很多福利出現(xiàn)了當然每個人能都獲得的信息都有所不同這就是所謂的信息差秉著好東西需要分享和開源的好習慣所以來給你們送福利了其他福利一程序員節(jié)最新福利之最全資 前言 有好久沒有寫博客了,主要這段時間都沉迷學習無法自拔了,哈哈.自吹一波. 前兩天不是1024節(jié)嗎,所以就有很多福利出現(xiàn)了,當然每個人能都獲得的...

    RancherLabs 評論0 收藏0

發(fā)表評論

0條評論

CKJOKER

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<