数据类型 -- Set(集合)

2019-01-04  本文已影响0人  __深蓝__

集合(set)是一个无序、不重复的元素序列。
集合(set)是可变数据类型

创建集合

使用 集合变量 = {value01,value02,...}集合变量 = set(value)

>>> s1 = { 1, 2, 3 }
>>> s1
{1, 2, 3}

>>> s2 = set( [1, 2, 3] )
>>> s2
{1, 2, 3}

第2个例子中,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。

>>> s = set()
或
>>> s = { () }

直接使用 s = { } 会创建一个空字典

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 差集,a 中包含而 b 中不包含的元素
{'r', 'd', 'b'}
>>> a | b                              # 并集,a 或 b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 交集,a 和 b中都包含了的元素
{'a', 'c'}
>>> a ^ b                              # a 和 b 中不同时存在的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
>>> s = {[1,2,3], [11,22,33]}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
  • set 的原理和 dict 一样,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
  • 注意区别:“将 list 转换为集合 ” 和 “ 将 list 做为元素放入集合 ”
>>> s1 = set( [1,2,3,4,5] )   # 使用 set() 函数,将 list 转为 集合
>>> s1
{1, 2, 3, 4, 5}
>>> type(s1)
<class 'set'>

>>> s2 = { [1,2,3,4,5] }     # 将 list 做为元素放入集合
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
集合方法
>>> thisset = set(("Google", "Neuedu", "Taobao"))
>>> thisset.add("Facebook")
>>> thisset
{'Taobao', 'Facebook', 'Google', 'Neuedu'}

>>> thisset.add("Facebook")
>>> thisset.add("Facebook")
>>> thisset
{'Taobao', 'Facebook', 'Google', 'Neuedu'}
x = {"apple", "banana", "cherry"}
y = {"google", "neuedu", "apple"} 
x.update(y)  
print(x)

{'banana', 'apple', 'google', 'neuedu', 'cherry'}

注意: s1.add( (1,2,3) ) 是把元组 (1,2,3) 作为元素添加到集合中,得到的结果是 {1, 2, 3, (1, 2, 3)}

>>> thisset = set(("Google", "Neuedu", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Neuedu'}
>>> thisset.remove("Facebook")   # 不存在会发生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'

discard(obj),删除元素,不返回被删元素,元素不存在时不报错
remove(obj),删除元素,不返回被删元素,元素不存在时报错
pop(),随机删除元素,返回被删元素,集合为空时报错

>>> thisset = set( ("Google", "Neuedu", "Taobao") )
>>> "Neuedu" in thisset
True
>>> "Facebook" in thisset
False
fruits = {"apple", "banana", "cherry"}
x = fruits.copy()
print(x)

{'cherry', 'banana', 'apple'}
集合函数
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3




- end -

上一篇下一篇

猜你喜欢

热点阅读