一、集合是字典的表亲:
>>> num = {}
>>> type(num)
<class 'dict'>
>>> num2 = {1, 2, 3, 4}
>>> type(num2)
<class 'set'>
【解释】大括号并不是字典的特权。
在Python里,如果用大括号括起一堆没有映射关系的数字时,这一堆数字就是集合(‘set’)。
二、集合的特点
(一)唯一性:里面的数只能出现一次:
>>> num1 = {1, 2, 2, 3, 4, 3, 3, 5, 4}
>>> num1
{1, 2, 3, 4, 5}
(二)不支持索引(‘index’):
集合和字典一样,都是无序的,不支持index。
>>> num1 = {1, 2, 3, 4, 5}
>>> num1[1]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
num1[1]
TypeError: 'set' object does not support indexing
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
num1[1]
TypeError: 'set' object does not support indexing
三、如何创建集合(两种方法)
(一)直接把一堆元素用大括号括起来
(二)使用工厂函数 __set()
>>> set1 = set([1, 2, 2, 3, 4])
>>> set1
{1, 2, 3, 4}
>>> set1 = set('I love you')
>>> set1
{'e', ' ', 'v', 'o', 'y', 'l', 'I', 'u'}
>>> set1 = set(['I love you'])
>>> set1
{'I love you'}
课堂搞搞看:去除列表中重复的元素:[1, 2, 3, 4, 5, 5, 3, 1, 0]
##非集合方式:
>>> num = [1, 2, 3, 4, 5, 5, 3, 1, 0] >>> temp = [] >>> for each in num: #对于在num内的元素 if each not in temp: # 如果没在temp里, temp.append(each) # 就给我进来吧!! >>> temp [1, 2, 3, 4, 5, 0]
##集合方式:
>>> num = [1, 2, 3, 4, 5, 5, 3, 1, 0] >>> num = list(set(num)) #把num转为集合(去除重复元素),再转为列表 >>> num [0, 1, 2, 3, 4, 5] '''但是再次变成列表时,会重新排序。 如果你的程序需要原有顺序的时候,就需要警惕这种办法!!'''
四、访问访问集合中的值
(一)for __读取集合中所有数据。
(二)in 和 not in __判断一个元素是否在集合中已经存在。
五、内置函数(具体函数看网站)
网站所在
(一)add() __添加元素
(二)remove() __移除元素
>>> num = {0, 1, 2, 3, 4, 5}
>>> num.add(6)
>>> num
{0, 1, 2, 3, 4, 5, 6}
>>> num.remove(1)
>>> num
{0, 2, 3, 4, 5, 6}
六、不可变集合 __frozenset()
>>> num = frozenset((1, 2, 3, 4, 5))
>>> num
frozenset({1, 2, 3, 4, 5})
>>> num.add(0)
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
num.add(0)
AttributeError: 'frozenset' object has no attribute 'add'
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
num.add(0)
AttributeError: 'frozenset' object has no attribute 'add'
【不可添加!!】