Python基礎(chǔ)入門—集合(set)

1. 是否為序列類型:即該數(shù)據(jù)的元素是否能夠索引.其中序列類型的包括str/list/tuple;

2. 是否可以原處修改:即該數(shù)據(jù)的元素是否能夠原處修改(特別提醒看官,這里說的是原處修改問題,有的資料里面說str不能修改,也是指原處修改問題.為了避免誤解,特別強調(diào)了原處).能夠原處修改的list/dict(特別說明,dict的鍵必須是不可修改的,dict的值可原處修改)

set可以堪稱是list和dict的雜合;

set的特點:

用{}定義,其中元素沒有序列,元素不能重復(fù)

繼承了list特點,可以原處修改


更改set:? s.add("數(shù)據(jù)類型")或者s1.update(s2)

>>> s1

{'y', 't', 'o', 'h', 'p', 'n'}

>>> s2

{'google', 'face', 'facebook', 123, 'book'}

>>> s3

{'facebook', 123}

>>> s4

{123, 'face'}

>>> s1.add(123)

>>> s1

{'y', 't', 123, 'o', 'h', 'p', 'n'}

>>> s1.add("abs")

>>> s1

{'y', 't', 123, 'abs', 'o', 'h', 'p', 'n'}

>>> s1.add([1,34.5])? ? ? ? ? #此處必須加"? ? ",否則報錯

Traceback (most recent call last):

? File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'list'

>>> s1.add("[1,34.5]")

>>> s1

{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', 'p', 'n'}

>>> s1.add("(1,34.5)")

>>> s1

{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', '(1,34.5)', 'p', 'n'}


s1.update(s2)

>>> s1

{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', '(1,34.5)', 'p', 'n'}

>>> s1.update(s2)

>>> s1

{'y', 't', 'facebook', '[1,34.5]', 'google', 123, 'abs', 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}

set刪除:s.pop()(隨意刪除)、s.remove("元素")(指定刪除)

>>> s1.pop()

'y'

>>> s1.pop()

't'

>>> s1.pop("google")

Traceback (most recent call last):

? File "<stdin>", line 1, in <module>

TypeError: pop() takes no arguments (1 given)


set.pop()是從set中任意選一個元素,刪除并將這個值返回.但是,不能指定刪除某個元素.報錯信息中就告訴我們了,pop()不能有參數(shù).

>>> s1.remove("google")

>>> s1

{'facebook', '[1,34.5]', 123, 'abs', 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}

>>> s1.remove("abs")

>>> s1

{'facebook', '[1,34.5]', 123, 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}

set.remove(obj)中的obj,必須是set中的元素,否則就報錯


跟remove(obj)類似的還有一個discard(obj):

>>> s1.discard("h")

>>> s1

{'facebook', '[1,34.5]', 123, 'o', 'face', '(1,34.5)', 'p', 'n', 'book'}

>>> s1.discard("n")

>>> s1

{'facebook', '[1,34.5]', 123, 'o', 'face', '(1,34.5)', 'p', 'book'}

與help(set.remove)的信息對比,看看有什么不同.discard(obj)中的obj如果是set中的元素,就刪除,如果不是,就什么也不做

set.clear():刪除所有元素

>>> s3

{'facebook', 123}

>>> s3.clear()

>>> s3

set()

>>> s3

set()

>>> bool(s3)

False

>>>

凍結(jié)集合:setname = frozenset(元素)

>>> f_set = frozenset("python")

>>> f

f_set? ? ? finally:? ? for? ? ? ? from? ? ? ?

filter(? ? float(? ? ? format(? ? frozenset(?

>>> f_set

frozenset({'y', 't', 'o', 'h', 'p', 'n'})

>>> f_set.add("abc")

Traceback (most recent call last):

? File "<stdin>", line 1, in <module>

AttributeError: 'frozenset' object has no attribute 'add'

>>>


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評論 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,191評論 0 3
  • 首先openpyxl庫沒有自帶的刪除行列的函數(shù),網(wǎng)上搜到的如下函數(shù)是錯的 因此我們自定義一個刪除行或列的函數(shù),下面...
    洪恩online閱讀 16,105評論 5 1
  • 1.scanf()讀入字符 在%c前加一個空格,將緩存區(qū)中的回車符讀走: scanf()按指定格式讀取輸入,非法字...
    sure_風(fēng)雨與晴閱讀 335評論 0 3
  • 她大概是,大學(xué)前兩年,舍友里面最最優(yōu)秀的一個,她的優(yōu)秀是情商高,心理成熟,眼界寬,很多學(xué)校的獎項都是蹭來的,你說她...
    與時光有約閱讀 382評論 0 1

友情鏈接更多精彩內(nèi)容