回顧 int/float/str/list/tuple/dict 整數型和浮點型是不可變的,不是序列 字元串是不可變的,是序列 列表是可變的,是序列 元組是不可變的,是序列 字典是可變得,但不是序列 集合的基本概念 集合是基本的數學概念,它是集合論的研究對象,指具有某種特定性質的事物的總體,(在最原 ...
回顧
int/float/str/list/tuple/dict
整數型和浮點型是不可變的,不是序列
字元串是不可變的,是序列
列表是可變的,是序列
元組是不可變的,是序列
字典是可變得,但不是序列
集合的基本概念
集合是基本的數學概念,它是集合論的研究對象,指具有某種特定性質的事物的總體,(在最原始的集合論─朴素集合論─中的定義,集合就是“一堆東西”。)集合里的事物(“東西”),叫作元素。若然 x 是集合 A 的元素,記作 x ∈ A。
創建集合的方法
方法1:使用花括弧{} ;用花括弧所包裹的對象,就是一個集合
方法2:set()函數 一般使用這個函數創建集合
集合的元素沒有順序,不可重覆
集合是不可哈希的
1 >>> {1,"python"} #使用花括弧創建集合 2 set(['python', 1]) 3 >>> type({1,"python"}) 4 <type 'set'> 5 >>> set("python") 6 set(['h', 'o', 'n', 'p', 't', 'y']) 7 >>> s= set("python") #使用set()創建集合 8 >>> s 9 set(['h', 'o', 'n', 'p', 't', 'y']) 10 >>> s2=set(["baidu","google","ali"]) 11 >>> type(s2) 12 <type 'set'> 13 >>> s2 14 set(['baidu', 'google', 'ali']) #集合的元素沒有順序 15 >>> s3=set([2,2,2,2,2]) 16 >>> s3 #集合元素不可重覆 17 set([2]) 18 >>>
可哈希與不可哈希
就是在其生存期內,不可變的對象,是可哈希的,反之,可變的就是不可哈希的
Python中所有不可變的都是可哈希的,如數字、字元串、元組
另列表、字典都是可變的,都是不可哈希的
在字典中的Key鍵必須是可哈希的,即不可變的對象
在集合中,集合的元素必須是可哈希的,也就是說集合的元素必須是不可變對象
所以說用列表作為集合的元素,就報錯,因為列表是不可哈希的對象
1 >>> lst =[[1,2,3],"python"] #用列表作為參數,創建一個集合,報錯list 是不可hash的 2 >>> s =set(lst) 3 Traceback (most recent call last): 4 File "<stdin>", line 1, in <module> 5 TypeError: unhashable type: 'list' 6 >>> d={[1,2,3]:"python"} #創建一個字典,key為列表,報錯list 是不可hash的 7 Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9 TypeError: unhashable type: 'list' #list 是不可哈希的 10 >>>
集合與列表之間的轉換
set() list()
1 >>> lst=[1,2,3] 2 >>> s =set(lst) #將列表轉換成集合 3 >>> s 4 set([1, 2, 3]) 5 >>> lst2 =list(s) #將集合轉換為列表 6 >>> lst2 7 [1, 2, 3] 8 >>> a =[1,2,2,3,3,6,6,8,9,0,0] #去除列表中的重覆項,可使用set()集合 9 >>> s =set(a) 10 >>> s 11 set([0, 1, 2, 3, 6, 8, 9]) 12 >>> a =list(s) #去除重覆後,再轉換為列表list 13 >>> a 14 [0, 1, 2, 3, 6, 8, 9] 15 >>> s 16 set([0, 1, 2, 3, 6, 8, 9]) 17 >>> hash(s) #返回hash值,也可判斷是否可哈希,報錯不可哈希,否則返回hash值 18 Traceback (most recent call last): 19 File "<stdin>", line 1, in <module> 20 TypeError: unhashable type: 'set' 21 >>> hash(1) 22 1
創建不可變集合
frozenset() 創建不可變集合,是可哈希的
1 >>> a 2 [0,1,2,3,6,8,9] 3 >>> s2 =frozenset(a) 4 >>> type(s2) 5 <type 'frozenset'> 6 >>> hash(s2) 7 2096340863 8 >>>