Python基礎入門—集合(set)

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

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

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

set的特點:

用{}定義,其中元素沒有序列,元素不能重複

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

 

更改set:  s.add("數據類型")或者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()不能有參數.

>>> 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

>>>

凍結集合: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'

>>>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章