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